如何编写引用链接服务器的可移植 SQL?

Doc*_*nes 9 sql-server-2008 sql-server stored-procedures linked-server

我有一个指向链接服务器的存储过程。在整个过程中的几个地方,我得到了如下内容:

INSERT INTO [TableName]
(...Columns...)
SELECT ...Columns...
FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName]
WHERE TableNameID = @TableNameID
Run Code Online (Sandbox Code Playgroud)

这个过程存在于我的开发环境、测试环境和实时环境中。

问题是该过程的每个副本都略有不同,因为每个环境的服务器名称都不同。这使得管理脚本更新的部署变得很麻烦。

有没有办法使程序可移植,以便每个环境都可以运行相同版本的程序?

如果没有,我可以做些什么来使脚本部署更不容易出错/错误?

Eli*_*Eli 14

链接服务器的名称不必是服务器的名称。您可以使用通用名称。

EXEC master.dbo.sp_addlinkedserver
    @server = N'COMMONNAME',
    @srvproduct=N'MSDASQL',
    @provider=N'SQLNCLI',
    @provstr=N'DRIVER={SQL Server};SERVER=ACTUALSERVERNAME;UID=user1;PWD=rosebud567;', 
    @catalog=N'database1'
Run Code Online (Sandbox Code Playgroud)

在每个具有相同名称的环境上设置链接服务器,但实际上将它们指向不同的服务器。