如果不指定ODBC数据源,仅使用连接字符串,就可以查詢
比如執行
exec sp_addlinkedserver 'test', ' ', 'MSDASQL', NULL, NULL,
'Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;Port=3306;UID=yu;PWD=111;'
然後執行下面的查詢就沒問題
SELECT * FROM OPENQUERY(test,'select address_book_id,zones_id,
customer_company,customer_gender from address_book')但是如果添加鏈接服務時指定了ODBC数据源,比如'mytest'
exec sp_addlinkedserver 'test', ' ', 'MSDASQL', 'mytest', NULL,
'Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;Port=3306;UID=yu;PWD=111;'
再执行查询就要报错OLE DB 提供程序 'MSDASQL' 报错。 
[OLE/DB provider returned message: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序]
OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005:   ]。
太奇怪了,是微软的bug吗?