我即将将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显示可用的服务器。
我该如何解决这个问题?
答案 0 :(得分:1)
您需要先删除旧服务器foo-2012
,以便sys.servers
中没有行,然后使用'local'
添加:
EXEC sp_dropserver 'foo-2012';
GO
EXEC sp_addserver 'foo-2014', 'local';
GO
然后,根据sp_addserver的文档,您需要重新启动MSSQLSERVER服务才能使更改生效:
只有在重新启动数据库引擎后,本地定义才会生效。