我最近将SQLServer从2005年升级到了2014年(链接服务器),并且我注意到调用exec命令以在升级的链接服务器上执行存储过程的存储过程之一因错误而失败。
在sys.servers中找不到服务器“服务器名称”。验证是否指定了正确的服务器名称。如有必要,执行存储过程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失败了(它在升级之前可以工作)。SQLServer 2005和SQL Server 2014之间的语法差异是否导致失败?
我发现了问题。链接服务器已正确创建。但是,在升级并切换服务器后,服务器名称sys.servers仍具有旧的服务器名称。
sys.servers
我必须删除旧服务器名称,然后将新服务器名称添加到新服务器sys.servers上
sp_dropserver 'Server_A' GO sp_addserver 'Server',local GO