|
如果Provider使用SQLOLEDB,在SQL Server 2005 x64是可以利用linked server方式連結SQL Server 7.0,但是到了SQL Server 2008 x64就會出現以下錯誤訊息:
連結伺服器 "xxx" 的 OLE DB 提供者 "SQLNCLI10" 傳回訊息 "由於預先登入失敗,所以用戶端無法建立連接"。
訊息 10054,層級 16,狀態 1,行 0
TCP 提供者: 遠端主機已強制關閉一個現存的連線。
連結伺服器 "xxx" 的 OLE DB 提供者 "SQLNCLI10" 傳回訊息 "用戶端無法建立連線"。
訊息 26,層級 16,狀態 1,行 0
用戶端無法建立連線,因為登入前的交握期間發現錯誤。常見原因包括用戶端嘗試連接到不支援的 SQL Server 版本、伺服器太忙而無法接受新連接,或伺服器有資源限制 (記憶體或允許的連線數上限)。
因為SQL Server 2005是使用SQLNCLI 9.0,而SQL Server 2008是使用SQLNCLI 10.0
* SQLNCLI (SQL Native Client 9.0 OLEDB Provider released with SQL Server 2005)
* SQLNCLI10 (SQL Native Client 10.0 OLEDB Provider Released with SQL Server 2008)
目前看到的解決方法是改用 MSDASQL (OLEDB Provider for ODBC) 方式連線:
方法1 - 利用ODBC管理員建立DSN連結SQL Server 7.0
* Use ODBC Administrator to create DSN that connects to SQL Server 7.0.
* Create a Linked Server and Choose MSDASQL and then connect to DSN that was created.
方法2 - 直接將provider string加在裡面即可使用 (測試確定可用)- EXEC sp_addlinkedserver
- @server = 'xxx',
- @srvproduct = '',
- @provider = 'MSDASQL',
- @provstr = 'DRIVER={SQL Server};SERVER=192.168.1.100;UID=username;PWD=password;'
複製代碼 Reference: http://sqlbits.wordpress.com/200 ... and-sql-server-7-0/ |
|