While creating a linked server between two SQL Server 2008 x64 instances today, I received this error:

OLE DB provider 'SQLNCLI10' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode. (Microsoft SQL Server, Error: 7308)

Looking in the server's ODBC list, the SQLNCLI10 driver wasn't listed as installed. I downloaded the SQL Server 2008 Feature Pack (April 2009) and installed it which added the entry.

Then I received Error 7303:

Cannot initialize the data source object of OLE DB provider

What it really meant was that after adding an ODBC driver you should restart the SQL Server service. After that, everything was hunky dory.