我们有以下SSDT项目结构:
DBCore项目:包括不是sql server edition独占的所有对象。
DBStandardEdition项目:包括所有标准版特定对象。
DBStandardedition项目使用"相同的数据库"引用DBCore项目。选项。
当我直接通过visual studio将DBStandardEdition项目发布到我的演示服务器时,一切正常。所有标准版相关对象都是正确创建的。
当我使用visual studio中的模式比较工具将演示服务器上的数据库与我的dacpac文件进行比较时,该工具想要删除我在DBStandardEdition项目中定义的所有对象。我们还有一个程序,它使用DacServices - Class(DacServices.Deploy)发布dacpac文件。该程序实际上删除了我的DBStandardEdition.dacpac文件中定义的所有内容。
我在这里做错了什么或者它是一个错误?
更新 我在项目设置中发现了一个问题。我已经设置了#34; Build输出文件名"对于所有数据库项目具有相同的值。更改此设置后,Visual Studio在DBStandardEdition \ Bin \ Release文件夹中生成两个DacPac文件。 DBCore.dacpac和DBStandardEdition.dacpac。当我现在使用visual studio的比较工具将DBStandardEdition.dacpac与我的数据库进行比较(并启用"包含复合对象(仅限数据库目标)" - 选项)时,所有看起来都很好。新添加的对象到DBCore项目列出了"添加",我的DBStandardEdition项目中的所有对象仍然存在。当我激活Deployoption"包含复合对象时......"一切都很好。
答案 0 :(得分:0)
您需要在架构比较选项中启用“包含复合对象(仅限数据库目标)”选项。默认情况下,这是关闭的,表示从比较中排除引用的对象。