Visual Studio 数据库项目在脚本中参数化数据库名称

Visual Studio Database Project Parameterise Database Name in Scripts

我有两个数据库(一个测试数据库和一个实时数据库),它们是在 SSMS 2008 R2 中创建的。我使用 Visual Studio 2010 数据库项目和模式比较从测试环境中获取模式并控制更改等;一切正常,我已准备好将整个数据库发布到实时位置。

我遇到的问题是,虽然我小心翼翼地为测试数据库和实时数据库指定了相同的名称,但它们引用了预先存在的测试数据库和实时数据库中的表,这些表没有相同的名称。这意味着正确的测试存储过程可能如下所示:

SELECT * FROM TestDatabase.dbo.Customers

但是相同的程序,当发布到实时环境时,需要使用现有实时数据库的不同名称:

SELECT * FROM LiveDatabase.dbo.Customers

从 Visual Studio 数据库项目发布到实时环境时,我可以查找并替换所有脚本,将数据库名称替换为另一个,但我不愿意更改出版前的剧本;这样做也意味着 Visual Studio 脚本将不再与测试环境脚本匹配,这会混淆事情并强制检查未进行 "real" 感觉更改的地方,更不用说轻微的违规行为了导致引用丢失的语法。

所以我的问题是 - 是否有其他方法可以以相当干净的方式更改数据库项目脚本中的所有引用(例如,通过使用参数化数据库名称)?

如有必要,我可以轻松地一次性重写存储过程,但我无法更改预先存在的数据库的名称。

不确定您是否已经找到了答案。如果没有,请尝试添加对数据库项目的数据库引用,称之为“varDatabase”。确保使用此引用将所有脚本签入 TFS,而不是硬编码数据库名称。您可以使用 $ 调用此引用,例如 [$(varDatabase)]。 在发布期间,您可以一次性将值传递给此变量。