SQL Server 2008 64Bit 透過Link Server 的方法連結到SQL Server 2000 32Bit.無法正常使用

 SQL Server 2008 64Bit 透過Link Server 的方法連結到SQL Server 2000 32Bit.無法正常使用


 連結數據庫方法如下:

sp_addLinkedserver @server='linkedSQLDB',@srvproduct='SQLOLEDB',@provider='SQLOLEDB',@datasrc ='sqlserver1',@catalog=N'master'

EXEC sp_addlinkedsrvlogin 
     'linkedSQLDB', --被访问的服务器别名
     'false', 
     NULL, 
     'sa', --帐号
     'sa' --密码
sp_dropserver @server='linkedSQLDB' 移除


當在SQL Server 64位上執行

select * from linkedSQLDB.master.dbo.sysobjects

會出錯:

The stored procedure required to complete this operation could not be found on the server.Please contact your system administrator. (伺服器上找不到完成這項作業所需要的預存程序。請和系統管理員連絡)
Msg 7311, Level 16, State 2, Line 1 (訊息 7311,層級 16,狀態 2,行 1)
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "<LinkedServerName>".The provider supports the interface, but returns a failure code when it is used. (無法為連結伺服器 <LinkedServerName> 的 OLE DB 提供者 "SQLNCLI" 取得結構描述資料列集 "DBSCHEMA_TABLES_INFO"。提供者支援介面,但在使用時傳回失敗碼。)

 

原因:

64位和32位有一些系統的存儲過程不一致,有兼容性問題。

 

解決方法:

1.把SQL Server2000升級到sp3或sp4

2.把sp裡的instcat.sql找出來,在sql server2000裡手動執行。

3.問題解決

 

注:

我在測試過程中,把sp4裡的instcat.sql放在 sql server2000 sp3服務器裡執行後,問題同樣解決

 

micosoft裡的說明如下:

http://support.microsoft.com/kb/906954/

參考:

http://www.dotblogs.com.tw/jamesbi/archive/2010/11/19/19546.aspx


 

你可能感兴趣的:(SQL Server 2008 64Bit 透過Link Server 的方法連結到SQL Server 2000 32Bit.無法正常使用)