【发布时间】:2015-05-01 13:44:08
【问题描述】:
我有两个数据库(一个测试数据库和一个实时数据库),它们是在 SSMS 2008 R2 中创建的。我使用 Visual Studio 2010 数据库项目和架构比较从测试环境中吸收架构并控制更改等;一切正常,我准备将整个数据库发布到实时位置。
我遇到的问题是,虽然我很小心地将测试和实时数据库命名为相同的名称,但它们引用了预先存在的测试和实时数据库中不具有相同名称的表。这意味着正确的测试存储过程可能如下所示:
SELECT * FROM TestDatabase.dbo.Customers
但是相同的过程,在发布到直播环境时,需要使用现有直播数据库的不同名称:
SELECT * FROM LiveDatabase.dbo.Customers
在从 Visual Studio 数据库项目发布到实时环境时,我可以对所有脚本进行查找和替换,以将数据库名称替换为另一个,但我不愿意在发布之前直接对脚本进行更改;这样做也意味着 Visual Studio 脚本将不再与测试环境脚本匹配,这会使事情变得混乱并强制检查没有进行“真正”意义更改的地方,更不用说语法中的轻微不规则导致引用被错过了。
所以我的问题是 - 是否有其他方法可以以相当干净的方式更改数据库项目中脚本中的所有引用(例如,通过使用参数化的数据库名称)?
如果需要,我可以轻松地重写存储过程,作为一次性的,但我无法更改预先存在的数据库的名称。
【问题讨论】:
-
参数化对象(数据库、表、列等)名称的唯一方法是使用动态 SQL。
-
我明白了;感谢你的回答。我曾希望在预部署脚本或其他东西中可能会有一些东西。嗯嗯。
标签: sql-server visual-studio-2010 visual-studio database-schema