我们目前的某个链接服务器存在问题。
如果我运行此代码就可以了
SELECT *
FROM [LINKEDSERVER].[databasename].dbo.[tablename] a
INNER JOIN [localdb].dbo.[localtable] b
on b.somefield = a.somefield
但这失败了
DELETE FROM a
FROM [LINKEDSERVER].[databasename].dbo.[tablename] a
INNER JOIN [localdb].dbo.[localtable] b
on b.somefield = a.somefield
给出错误:
OLE DB provider "SQLNCLI10" for linked server <servername> returned message "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".
Msg 7202, Level 11, State 2, Line 1
Could not find server <servername> in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
链接服务器确实出现在sys.sysservers中,我尝试删除和读取链接服务器,但没有效果:
exec sp_dropserver <servername>, droplogins
exec sp_addserver <servername>
exec sp_serveroption <servername>, 'data access' , 'true'
链接服务器是SQL 2005,链接服务器是2008R2
如果这是相关的(似乎可能),我最近迁移了我们要链接到新硬件的SQL服务器(使用新的SQL安装等)并将新硬件服务器的IP更改回旧服务器的连续性。在所有其他方面,这一切都很好。我们从来没有在旧服务器上遇到过这个问题。