Sql-Server

連結伺服器錯誤 - 從 SQL2008r2 到 SQL2014

  • June 4, 2020

當我嘗試使用連結伺服器查詢表時出現以下錯誤。在 SQL2008r2 實例上創建連結伺服器以連接到 SQL2014 實例。

連結伺服器 “server\SQL2014” 的 OLE DB 提供程序 “SQLNCLI10” 不包含表 ““db_name”.“dbo”.“table_name”"。該表不存在或目前使用者對該表沒有權限。

這是我用來創建連結伺服器的 TSQL

EXECUTE sp_addlinkedserver @server = N'server\SQL2014', @srvproduct=N'sql_server', @provider=N'SQLNCLI10'

EXECUTE sp_addlinkedsrvlogin @rmtsrvname='server\SQL2014', @useself='false',@rmtuser='sa', @rmtpassword='sa_password'

當我測試成功的連接時

連結伺服器登錄名是sa,因此權限不會成為問題。

sa 使用者已啟用並且表存在我可以使用 sa 使用者直接在 SQL2014 實例上連接並查詢所有表。

我哪裡錯了?

請嘗試在創建連結伺服器時指定**@datasrc參數,例如**

EXECUTE sp_addlinkedserver 
@server = N'server\SQL2014', 
@srvproduct=N'sql_server', @provider=N'SQLNCLI10', 
@datasrc = N'server\SQL2014'

混淆可能在於**@server**參數是要在您的程式碼中使用的連結伺服器的描述性名稱。 @datasrc實際上是 OLEDB 用來建立連接的物理伺服器名稱。

如果您檢查連接並使用 SA,您似乎沒有使用正確的語法 (Linkserver.Database.Schema.TableName) 或像表名這樣的語法部分不存在或表名不匹配……

引用自:https://dba.stackexchange.com/questions/177001