DacUpgradeOptions.IgnoreDataLoss
在自动数据层应用程序 (DACPAC) 升级中设置属性的最佳做法是什么?
根据 MSDN 文档(链接),如果IgnoreDataLoss
为True,即使某些操作导致数据丢失,升级也会继续进行。如果为False,这些操作将终止升级。例如,如果当前数据库中的表不存在于新 DAC 的架构中,则如果指定 True,则该表将被删除。默认值为True。
但是,在持续交付的环境中,每次数据库更改都会自动部署到管道(CI -> Test -> UI-Test)并最终部署到生产环境中,似乎将安全措施设置IgnoreDataLoss
为False,因为我们不希望生产数据库上发生数据丢失/漂移。如果IgnoreDataLoss
为False并且开发人员提交了导致数据丢失的数据库更改,则 CI/Test 构建将失败,从而使我们能够在此更改到达生产之前捕获它。
但是这种方法存在一个问题,因为有时数据丢失是故意的。例如,我们可能需要删除不再使用的特定表。如果IgnoreDataLoss
是False,这将导致构建失败并且永远不会应用 DACPAC 更改,因为检测到潜在的数据丢失(即使这种丢失是故意的)。在这种情况下,我们希望IgnoreDataLoss
是True。
只是想知道什么是最佳实践,尤其是在我们持续自动部署的环境中。任何建议将不胜感激。谢谢!