重命名 SQL 服务器主机后更新 sys.servers
Update sys.servers after renaming SQL Server Host
我即将把我的 SQL Server 2012 实例升级到 SQL Server 2014。
我克隆了主机 Windows 虚拟机并将其从 foo-2012
重命名为 foo-2014
。
重新启动时,SQL 服务器实例注意到它更新了它自己的名称,所以我现在可以用 foo-2014
登录它。一切顺利。
不幸的是 sys.servers
中的(单个)条目仍然是 foo-2012
这意味着 运行ning
SELECT *
FROM [foo-2012].[barDB].[dbo].tFooBarTable
失败:
Could not find server 'RW-DB-2014' 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.
很好。
我 运行 EXEC sp_addlinkedserver 'foo-2014', 'SQL Server'
并获得一个条目。
但现在新条目有 isLinked=1
(而现有条目有 isLinked=0
)。
Documentation 表示此设置很重要(尤其是对我的应用程序,它对 Distr.Trans 有非常强烈的意见。:( )
我不能直接edit/add to/modify sys.servers。任何这样做的尝试都会得到:
Ad hoc updates to system catalogs are not allowed.
我删除了成功的新条目 (EXEC sp_dropserver 'foo-2014'
),并尝试使用报告
的 EXEC sp_addserver 'foo-2014', 'local'
The server 'foo-2014' already exists
立即重新运行然后报告
The server 'RW-DB-2014' does not exist. Use sp_helpserver to show available servers.
我该如何解决这个问题?
您需要先删除旧服务器 foo-2012
,这样 sys.servers
中就没有行了,然后使用 'local'
:
添加
EXEC sp_dropserver 'foo-2012';
GO
EXEC sp_addserver 'foo-2014', 'local';
GO
然后您将需要重新启动 MSSQLSERVER 服务以使该更改生效,根据 sp_addserver 的文档:
The local definition takes effect only after the Database Engine is restarted.
我即将把我的 SQL Server 2012 实例升级到 SQL Server 2014。
我克隆了主机 Windows 虚拟机并将其从 foo-2012
重命名为 foo-2014
。
重新启动时,SQL 服务器实例注意到它更新了它自己的名称,所以我现在可以用 foo-2014
登录它。一切顺利。
不幸的是 sys.servers
中的(单个)条目仍然是 foo-2012
这意味着 运行ning
SELECT *
FROM [foo-2012].[barDB].[dbo].tFooBarTable
失败:
Could not find server 'RW-DB-2014' 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.
很好。
我 运行 EXEC sp_addlinkedserver 'foo-2014', 'SQL Server'
并获得一个条目。
但现在新条目有 isLinked=1
(而现有条目有 isLinked=0
)。
Documentation 表示此设置很重要(尤其是对我的应用程序,它对 Distr.Trans 有非常强烈的意见。:( )
我不能直接edit/add to/modify sys.servers。任何这样做的尝试都会得到:
Ad hoc updates to system catalogs are not allowed.
我删除了成功的新条目 (EXEC sp_dropserver 'foo-2014'
),并尝试使用报告
EXEC sp_addserver 'foo-2014', 'local'
The server 'foo-2014' already exists
立即重新运行然后报告
The server 'RW-DB-2014' does not exist. Use sp_helpserver to show available servers.
我该如何解决这个问题?
您需要先删除旧服务器 foo-2012
,这样 sys.servers
中就没有行了,然后使用 'local'
:
EXEC sp_dropserver 'foo-2012';
GO
EXEC sp_addserver 'foo-2014', 'local';
GO
然后您将需要重新启动 MSSQLSERVER 服务以使该更改生效,根据 sp_addserver 的文档:
The local definition takes effect only after the Database Engine is restarted.