9

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

4

2 回答 2

7

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

计划修改器检查部署计划并删除创建/修改/删除应忽略的对象的步骤。我们使用它来忽略数据文件(在各种暂存环境中具有不同的名称)、一些备份表和一些我们不保留在数据库项目中的对象类型(用户、角色成员资格、数据库级权限)。该功能类似于(但更细粒度)模式比较配置(忽略对象类型),但它在部署期间工作(也与 VSDBCMD 一起使用)。

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

于 2011-04-19T09:24:04.353 回答
6

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

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

因此,在部署 project1 时,不会包含视图,而在部署 project2 时,将包含视图和核心对象。

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

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

于 2011-03-05T00:59:59.227 回答