数据库项目(SqlPackager)中的对象创建可以是有条件的吗?

时间:2018-10-09 21:01:22

标签: sql-server sqlpackage

我有一个包含数百个对象(表,过程等)的Microsoft SQL Server数据库项目。但是,生成的数据库在两个上下文中使用-有些客户获得包含所有对象的数据库,但是有些客户的数据库仅包含对象的一个​​子集。其中约75%。

有没有一种方法可以标记数据库项目中的每个对象,我可以说是否应该基于某种切换来部署它?

我想到了一些选择:

  1. 使用部署前/部署后脚本。我真的不想这样做,因为它首先挫败了使用数据库项目的许多好处。
  2. 安装所有对象,并具有部署后步骤,该步骤将删除我们在“子集”安装中不需要的对象。对我来说似乎有点黑。
  3. 将一个数据库项目分成两个项目:一个带有必需的对象,另一个带有可选的对象。
  4. 有两个项目,一个带有“ all”,另一个带有子集。 75%的文件将出现在两个项目中。然后安装适当的项目数据库

我认为#3和#4听起来可行,但是我仍然希望有一个更简单,更可维护的解决方案。

1 个答案:

答案 0 :(得分:0)

看来执行此操作的正确方法是创建引用第一个数据库的第二个数据库项目。

数据库A将具有所有公共对象,数据库B将具有对数据库A的引用(参考->添加数据库引用)。我可以将数据库A运送为“精简”数据库,或者将数据库B运送为“完整”数据库。

仍在努力,但这似乎是我想要的最干净,正确的方法。

Microsoft提供了很好的参考,特别是创建了一个“复合项目”。 https://msdn.microsoft.com/en-us/library/jj684584(v=vs.103).aspx