重命名SQL Server主机后更新sys.servers

时间:2016-09-22 11:18:46

标签: sql-server rename linked-server

我即将将SQL Server 2012实例升级到SQL Server 2014。

我克隆了主机Windows VM,并将其从foo-2012重命名为foo-2014。 重新启动时,SQL Server实例注意到它已更新为自己的名称,因此我现在可以foo-2014登录。一切都好。

不幸的是sys.servers中的(单个)条目仍为foo-2012,这意味着正在运行

SELECT * 
FROM [foo-2012].[barDB].[dbo].tFooBarTable

失败了:

  

在sys.servers中找不到服务器'RW-DB-2014'。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver以将服务器添加到sys.servers。

精细。

我运行EXEC sp_addlinkedserver 'foo-2014', 'SQL Server'并获得一个条目。

但是现在新条目有isLinked=1(而现有条目有isLinked=0)。

Documentation表示此设置很重要(特别是对于我对Distr.Trans有非常强烈意见的应用。:()

我无法直接编辑/添加/修改sys.servers。任何这样做的尝试都会给出:

  

不允许对系统目录进行临时更新。

我删除了成功的新条目(EXEC sp_dropserver 'foo-2014'),并尝试使用EXEC sp_addserver 'foo-2014', 'local'报告

  

服务器'foo-2014'已经存在

立即重新运行drop然后报告

  

服务器'RW-DB-2014'不存在。使用sp_helpserver显示可用的服务器。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要先删除旧服务器foo-2012,以便sys.servers中没有行,然后使用'local'添加:

EXEC sp_dropserver 'foo-2012';
GO
EXEC sp_addserver 'foo-2014', 'local'; 
GO

然后,根据sp_addserver的文档,您需要重新启动MSSQLSERVER服务才能使更改生效:

  

只有在重新启动数据库引擎后,本地定义才会生效。