Visual Studio数据库项目中是否有一种方法可以在部署期间排除某些对象?

时间:2010-08-03 17:57:38

标签: visual-studio deployment database-project datadude

我有一个场景,我使用visual studio 2010数据库项目将更改部署到多个数据库安装,但在某些情况下,我想从该副本中排除一组视图。有没有办法使用构建配置来排除部署这些视图?

2 个答案:

答案 0 :(得分:7)

我最终编写了一个自定义部署计划修饰符,使用sqlcmd变量控制,指定在部署期间不应触及的对象。每个数据库项目配置可以引用一组不同的变量(.sqlcmdvars文件) - 这可以在项目属性的“部署”选项卡上设置。

计划修饰符检查部署计划并删除创建/修改/删除应忽略的对象的步骤。我们使用它来忽略数据文件(在各种登台环境中具有不同的名称),一些备份表以及我们未在DB项目中保留的几种类型的对象(用户,角色成员资格,数据库级权限)。该功能与Schema Comparison配置(忽略的对象类型)类似(但更精细),但它在部署期间(也使用VSDBCMD)工作。

“编写自定义部署计划修改器”部分可能听起来像很多工作,但实际上它很简单,我花了不到一天的时间,包括学习和测试部分。有一个非常有帮助的walkthrough on MSDN

答案 1 :(得分:6)

您是否尝试过创建复合项目?我自己没有实现这个场景,但似乎你可以:

  1. 创建project1,其中包含所有部署所需的核心对象。
  2. 创建project2,其中包含一些部署所需的一组视图。
  3. 在project2中添加对project1的引用。
  4. 因此,在部署project1时,不会包含视图,在部署project2时,将包含视图和核心对象。

    查看以下Microsoft链接。特别是标题为“复合项目的使用和限制”的部分

    http://msdn.microsoft.com/en-us/library/dd193405.aspx