4

我最近將SQL Server從2005年升級到2014年(鏈接服務器),我注意到調用exec命令在升級後的鏈接服務器上執行存儲過程的存儲過程之一失敗,出現錯誤在sys.servers中找不到服務器'服務器名稱'。 SQL Server 2014

在sys.servers.Verify中找不到服務器'服務器名稱',指定了正確的服務器名稱。如有必要,請執行存儲過程sp_addlinkedserver以將服務器添加到sys.servers。

問題是,鏈接的服務器存在,我已經做了測試,以確保我可以從鏈接服務器查詢表。以下是我查看鏈接服務器配置是否正確的檢查。

- select name from sys.servers -- > Lists the linked server 
- select top 10 * from linkedserver.database.dbo.table --> Gets top 10 records 
- exec linkedserver.database.dbo.storedproc --> Executes the stored procedure (I created a test stored procedure on the linked server and I can execute it) 

但是與該錯誤而失敗的一個低於

exec linkedserver.database.dbo.failing_storedprocedure @id,'load ','v2',@file_name, @list_id = @listid output; 

我已經重新創建鏈接的服務器和RPC是enabled.I've授予了對存儲過程的執行權限。我可以選擇記錄並在鏈接的服務器上執行其他存儲過程,但上面的exec失敗(它在升級之前起作用)。是否SQL Server 2005和SQL Server 2014之間的語法差異導致此失敗?

+0

錯誤訊息嗎? – TheGameiswar

+0

我有相同的消息,但我的原因是在數據庫名稱中的一個點看到[這個答案從db-name不在sys服務器](http://stackoverflow.com/a/23110264/819887) – surfmuggle

回答

4

我想出了這個問題。鏈接的服務器已正確創建。但是,服務器升級並切換後,sys.servers中的服務器名稱仍具有舊的服務器名稱。

我不得不放棄舊的服務器名稱,並添加新的服務器名稱sys.servers新服務器

sp_dropserver 'Server_A' 
GO 
sp_addserver 'Server',local 
GO 
+0

請注意,這不再適用於SQL Server 2014 - 它會導致消息:「功能」sp_addserver「不再受支持,請使用鏈接服務器替換遠程服務器。」 – Kinetic