链接服务器的数据库脚本问题
Database script issues with linked server
我的数据库脚本有问题。我们有三个环境:DEV、QA 和 UAT。我们有两个数据库:DB1
和 DB2
。在 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];
我的数据库脚本有问题。我们有三个环境:DEV、QA 和 UAT。我们有两个数据库:DB1
和 DB2
。在 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];