在不同环境中查询存储过程中的多个数据库的最佳方法是什么

时间:2016-11-22 12:08:44

标签: sql sql-server tsql stored-procedures database-migration

我想知道在存储过程中查询多个数据库的最佳方法是什么。我可以在存储过程中硬编码数据库名称 即:

Select *
from [Audit].[dbo].[AuditTable] inner join
     [Core].[dbo].[CoreTable]
     on ....

但我想将存储过程存储在版本控制系统中,然后将它们迁移到不同的环境中。所以我想知道最好的方法。不同环境的数据库名称不同。

可能的解决方案:

  • 使用视图跨越不同数据库中的表?数据库名称 将只存在于一个地方
  • 数据库的扩展属性/将名称传递给存储的 程序。可以动态更改名称 存储过程中使用的数据库:Changing database name in a stored procedure dynamically但我担心这会很混乱
  • 在所有区域中具有相同数据库名称的单独环境 环境?

这似乎与以下内容重复: Cross-database queries with different DB names in different environments

1 个答案:

答案 0 :(得分:0)

在所有环境中使用相同数据库名称的单独环境似乎是最干净的选项。

但如果这不是一个选项,也许替代变量可能会起作用。用于Visual Studio的SQL Server数据工具以这种方式处理它 - 使用令牌引用引用的数据库,例如[审计]将由[$(审计)]取代。然后,当您发布数据库时,为每个$变量定义一个值,并替换这些值代替标记。

显然,这需要你有一个机制来进行这些替换。