无法在sys.servers中找到服务器“服务器名称”。 SQL Server 2014

时间:2016-03-04 15:34:20

标签: sql sql-server stored-procedures sql-server-2014 linked-server

我最近将我们的SQL Server从2005升级到2014(链接服务器),我注意到调用exec命令执行升级后的链接服务器上的存储过程的存储过程之一失败,错误

  

无法在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。我已经为存储过程授予了执行权限。我可以在链接服务器上选择记录并执行其他存储过程,但上面的exec失败(它在升级之前有效).SQL Server 2005和SQL Server 2014之间是否存在导致此失败的语法差异?

3 个答案:

答案 0 :(得分:6)

我想出了这个问题。链接的服务器已正确创建。但是,在服务器升级并切换后,sys.servers中的服务器名称仍具有旧服务器名称。

我不得不删除旧服务器名称并将新服务器名称添加到新服务器上的sys.servers

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

答案 1 :(得分:1)

首先通过此查询检查您的链接服务器是否在列表中

select name from sys.servers

如果不存在,请尝试添加到链接服务器

EXEC sp_addlinkedserver @server = 'SERVER_NAME' --or may be server ip address

在该用户登录到该链接服务器后

EXEC sp_addlinkedsrvlogin 'SERVER_NAME'
                         ,'false'
                         ,NULL
                         ,'USER_NAME'
                         ,'PASSWORD'

然后您可以做任何您想做的事情,像本地服务器一样对其进行处理

exec [SERVER_NAME].[DATABASE_NAME].dbo.SP_NAME @sample_parameter

最后,您可以通过

从链接的服务器列表中删除该服务器。
sp_dropserver 'SERVER_NAME', 'droplogins'

如果有帮助,请投票。

答案 2 :(得分:0)

我有问题,因为链接服务器的名称中有多余的空格。 “ SERVER1,1234” 代替 “ SERVER1,1234”