0

我们有一个使用自定义版本控制的大型生产数据库,允许在架构更改时进行无缝升​​级(每个更改脚本都有版本)。一切正常。

我们可以在现有数据库中并行使用数据层应用程序编程模型吗?我们想尝试 DAC 方法,而无需将我们的数据库转换为 Data-Tier 应用程序。在模式级别将数据层应用程序与数据库的其余部分隔离是理想的。假设我们有三个模式,dbomydac。我们希望继续手动管理dbomy并使用 dacpacs 自动迁移dac模式中的所有内容。

我们已经尝试了一些测试,似乎数据层应用程序框架不喜欢竞争——它将超出其范围的对象检测为“手动更改”,并尝试在导入时删除它们。有没有办法改变这种行为?

4

1 回答 1

0

这里的答案是“或多或少,但有一些工作”。理想情况下,DAC 框架旨在为整个数据库建模,但可以通过多种方式进行配置以克服这一问题。

  • 一种方法是确保在任何发布配置中将“丢弃不在源中的对象”设置为 false。这是在高级发布设置中,可以在命令行等上进行配置。这样做的缺点是,当您删除 dac 架构中的对象时,它不会被删除

  • 对于更完整的解决方案,您需要使用部署贡献者来过滤与“dac”以外的模式相关的任何步骤。起点是我写的DacFx 教程中的“解决方案 2:部署时过滤” (源代码在这里)。这显示了如何过滤掉创建步骤 - 您实际上也希望将其扩展为删除步骤。好处是更多的控制和更好的匹配您的解决方案,缺点是需要编写一些自定义代码并将其包含在您的设置中。

请注意,无论您做什么,您仍然会发现模式比较和其他工具显示替代模式。您可以配置模式比较以过滤掉那些其他模式,并使用这些设置保存比较文件以供将来使用。

此外,您确实需要注意不要从 dac 模式引用其他手动管理的模式。支持编写自定义代码分析规则来强制执行此操作,或者您可以通过代码审查等方式强制执行。

于 2014-04-22T21:21:39.360 回答