我正在尝试servername\instancename
使用以下调用在SQL Server 2014实例上创建链接服务器:
EXEC master.dbo.sp_addlinkedserver
@server = N'servername\instancename',
@srvproduct=N'SQL Server'
我收到错误消息:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'servername\instancename' already exists.
根据MSDN的说法,这在SQL Server 2005中可以正常工作。
链接服务器不必是SQL Server的另一个实例,
因此,我不确定最近的版本中有哪些更改不允许这样做。使用UI会生成类似的消息:
您不能将本地SQL Server创建为链接服务器。
我知道请求是一件奇怪的事情,但是它要支持一些在2005年有效的旧代码(以前在单独的实例上使用)。文档指出它应该可以,但是不能。有什么方法可以使其在2014年正常工作,还是我必须修改基础代码?
1
实际上,它甚至都不起作用。您可以在本地服务器上使用4部分标识符。
—
Kris Gruttemeyer 2014年
为什么要尝试创建到本地服务器的链接服务器?哪一部分不起作用?也许那就是您应该问的问题...
—
亚伦·贝特朗
遗留代码是为通过链接服务器连接的不同实例编写的。在历史上的某个时候,两个实例合并为一个实例,但是代码和链接服务器保持不变。我的目标是按原样支持代码,因为a)我不知道转换代码涉及什么,并且b)主要开发人员希望将来能够支持将数据库分发到单独的实例。
—
mathewb 2014年
您可能需要考虑同义词。然后,如果将对象移动到其他服务器,则只需拖放并重新创建同义词即可,而不必触摸代码。
—
亚伦·伯特兰
谢谢亚伦。我认为这正是我想要的。一个数据库使用同义词,因此我只需要删除/创建它们就可以从四部分名称中删除服务器名称。然后,我可以完全消除链接服务器。如果以后再移动数据库,则可以将链接的服务器名称重新添加到同义词中。得到它了。
—
mathewb 2014年