我有两个数据库(测试和实时),我在SSMS 2008 R2中创建。我使用Visual Studio 2010数据库项目和模式比较来从测试环境中获取模式并控制更改等;这一切都正常,我已准备好将整个数据库发布到实际位置。
我遇到的问题是,虽然我小心翼翼地给测试和实时数据库提供相同的名称,但它们引用了预先存在的测试和实时数据库中不具有相同名称的表。这意味着正确的测试存储过程可能如下所示:
SELECT * FROM TestDatabase.dbo.Customers
但相同的过程在发布到实时环境时需要使用现有实时数据库的不同名称:
SELECT * FROM LiveDatabase.dbo.Customers
当涉及从Visual Studio数据库项目发布到实时环境时,我可以查找并替换所有脚本以用另一个脚本替换数据库名称,但我不愿意在发布之前直接更改脚本;这样做也意味着Visual Studio脚本将不再匹配测试环境脚本,这会使事情变得混乱,并强制检查出没有真正的"感觉发生了变化,更不用说语法中的轻微不规则导致错过了引用。
所以我的问题是 - 是否有其他方法可以以相当干净的方式更改数据库项目中脚本中的所有引用(例如,通过使用参数化数据库名称)?
如果需要,我可以轻松地重新编写存储过程,作为一次性,但我无法更改预先存在的数据库的名称。
答案 0 :(得分:1)
不确定您是否已找到答案。如果没有,请尝试向数据库项目添加数据库引用,并将其命名为varDatabase
'。确保使用此引用将所有脚本都检入TFS
,而不是硬编码数据库名称。您可以使用$例如[$(varDatabase)]
来调用此引用。
在发布期间,您可以将值作为一个事物传递给此变量。