3

所以我们有这样的情况,我们有两个不同的数据库,存储过程需要引用另一个数据库来获取信息。我们通常会将查询编写为如下所示

select * from Mercury.dbo.MyTable a join Purchasing.dbo.OtherTable b on a.a = b.a

在生产环境和开发环境中这对我们来说效果很好,但最近我们将开发分为 Dev/QA/ST,并且我们有不同版本的数据库来匹配环境。

Example
Purchasing, PurchasingQA, PurchasingST
Mercury, MercuryQA, MercuryST

所以现在我们在推广代码时遇到了问题,因为 QA 中的存储过程将引用用于开发的数据库。

所以我的问题是如何根据环境变量更改正在访问的数据库?我已经开始为此使用 DynSQL,但这会导致代码更难维护。

也许有办法创建一个数据库范围的“数据库别名”?

4

1 回答 1

4

您可以考虑为此使用同义词。在您的情况下,只需创建一个引用其他数据库表的同义词,例如:

为 Mercury.dbo.MyTable 创建同义词 MyTable

每个数据库都有自己的同义词,但其余的脚本和存储过程将是相同的。

于 2012-11-05T08:55:04.647 回答