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