【问题标题】:Database script issues with linked server链接服务器的数据库脚本问题
【发布时间】:2016-05-03 22:33:47
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否正在尝试将您的脚本从 dev/qa 推广到 UAT?
  • 在 UAT 中定义一对链接服务器,就像在 DEV/QA 中一样,使用 DEV/QA 中使用的名称指向自身。 然而,在这个廉价虚拟机的时代,为什么你的 DEV 和 QA 环境与你的 UAT 环境不同?您可能已经浪费了比服务器许可证还要多的人工费用。
  • 我通常会在 UAT 中拥有所有链接并从 dev/qa 环境中提取数据。在 UAT 中,您必须使用每个引用 dev/qa 的 sps 版本,相同的代码不同的来源。

标签: sql-server database production-environment linked-server


【解决方案1】:

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

假设 UAT 数据库的服务器名称是 MYUATSRVNAME(使用 SELECT @@SERVERNAME 的输出)。您可以创建一个自引用链接服务器,其名称与 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];

【讨论】:

  • 我已将此作为答案,因为它回答了我的问题。但是,拥有自引用链接服务器的问题在于,它是一个“环回链接服务器”,实际上会降低性能,并且不能在分布式事务上执行。感谢您的意见。
  • @Immortal 不客气。在您的 UAT 环境中,性能是一个大问题吗?您提出了关于性能和分布式事务的优点,但除了在 UAT 上重新创建与 DEV/QA 相同的设置之外,我认为没有办法保持您的 SQL 脚本相同。
  • 是的,你是对的,这就是为什么它现在对我来说是一个挣扎点:(不幸的是。
猜你喜欢
  • 2021-01-31
  • 2021-03-25
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多