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

Jas*_*son 9 deployment database-project datadude visual-studio

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

Jak*_*ski 7

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

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

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


Phi*_*hil 6

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

  1. 创建project1,其中包含所有部署所需的核心对象.
  2. 创建project2,其中包含一些部署所需的一组视图.
  3. 在project2中添加对project1的引用.

因此,在部署project1时,将不包含视图,并且在部署project2时,将包括视图以及核心对象.

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

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