1

我们有以下 SSDT 项目结构:

DBCore 项目:包括所有非 sql server edition 独有的对象。

DBStandardEdition 项目:包括所有标准版特定对象。

DBStandardedition 项目引用了带有“相同数据库”选项的 DBCore 项目。

当我直接通过 Visual Studio 将 DBStandardEdition 项目发布到我的演示服务器时,一切正常。所有标准版相关对象均已正确创建。

当我使用 Visual Studio 中的模式比较工具将演示服务器上的数据库与我的 dacpac 文件进行比较时,该工具想要删除我在 DBStandardEdition 项目中定义的所有对象。我们还有一个使用 DacServices - 类 (DacServices.Deploy) 发布 dacpac 文件的程序。该程序实际上删除了我的 DBStandardEdition.dacpac 文件中定义的所有内容。

我在这里做错了什么还是一个错误?

更新 我在我的项目设置中发现了一个问题。我已将所有数据库项目的“构建输出文件名”设置为相同的值。更改此设置后,Visual Studio 会在我的 DBStandardEdition\Bin\Release 文件夹中生成两个 DacPac - 文件。DBCore.dacpac 和 DBStandardEdition.dacpac。当我现在使用 Visual Studio 的比较工具将 DBStandardEdition.dacpac 与我的数据库进行比较时(并启用“包括复合对象(仅限数据库目标)”-选项),一切看起来都不错。新添加到 DBCore 项目的对象以“添加”列出,我的 DBStandardEdition 项目中的所有对象仍然存在。当我激活部署选项“包括复合对象...”时,一切都部署得很好。

4

1 回答 1

0

您需要在模式比较选项中启用“包括复合对象(仅限数据库目标)”选项。默认情况下这是关闭的,这意味着引用的对象被排除在比较之外。

于 2014-09-15T19:23:34.140 回答