链接服务器的数据库脚本问题

Database script issues with linked server

我的数据库脚本有问题。我们有三个环境:DEV、QA 和 UAT。我们有两个数据库:DB1DB2。在 DEV/QA 上,这两个数据库位于不同的物理服务器上,因此我们在 DB1 中有一个指向 DB2 的链接服务器。但是在 UAT 上,它是具有两个数据库的单个服务器。

我们的问题是我们编写的脚本涉及使用 DB2 链接服务器引用 DB2,这在 UAT 中失败。我们采用的流程是使用手工方式部署到UAT,效率不高。

有人可以建议可以做些什么来改善这一点吗?

您可以在您的 UAT 环境的数据库中创建一个链接服务器来引用自身,与您的 DEV/QA 环境中的链接服务器同名。

假设 UAT 数据库的服务器名称是 MYUATSRVNAME(使用 SELECT @@SERVERNAME 的输出)。您可以创建一个 self-referencing 链接服务器,其名称与您 DEV/QA 的 DB1 中使用的链接服务器名称相同。假设名称是 UVWXYZ,在你的 UAT 数据库上执行

EXEC sp_addlinkedserver @server='UVWXYZ',@srvproduct='',@provider='SQLNCLI',@datasrc='MYUATSRVNAME';

这样您就可以使用引用相同链接服务器名称的相同脚本。例如,此查询应该在 DEV/QA 和 UAT 上的 DB1 中工作:

SELECT * FROM [UVWXYZ].[DB2].[your_schema].[your_table];