自動データ層アプリケーション(DACPAC)のアップグレードでDacUpgradeOptions.IgnoreDataLoss
プロパティを設定するベストプラクティスは何ですか? MSDNのドキュメント(link)に基づいて継続的な展開でDacUpgradeOptions.IgnoreDataLossフラグを設定するためのベストプラクティス?
IgnoreDataLoss
が真であれば、アップグレードは、操作のいくつかは、データの損失につながる場合でも続行されます。 偽の場合、これらの操作はアップグレードを終了します。たとえば、現在のデータベース内のテーブルが新しいDACのスキーマに存在しない場合、Trueが指定されているとテーブルは削除されます。これのデフォルト値はTrueです。
ただし、すべてのデータベース変更がパイプライン(CI - >テスト - > UIテスト)に自動的に展開され、最終的にはプロダクション環境に展開される継続的な配信環境では、 IgnoreDataLoss
はFalseです。これは、本番データベースでデータの損失やドリフトが発生しないようにするためです。 IgnoreDataLoss
がFalseであり、開発者がデータの損失をもたらすデータベース変更をコミットすると、CI /テストビルドが失敗し、この変更がプロダクションに達する前にこれをキャッチできます。
このアプローチには問題がありますが、は、データ損失が意図的な場合は回です。たとえば、使用されていない特定のテーブルを削除する必要があるかもしれません。 IgnoreDataLoss
がFalseの場合、これはビルドに失敗し、潜在的なデータ損失が検出されるため(たとえそのような損失が意図的であっても)、DACPACの変更は適用されません。このシナリオでは、IgnoreDataLoss
は真のとなります。
これは特に連続して自動的に展開している環境では、何がベストプラクティスになるのだろうかと思います。どんな提案も大歓迎です。ありがとう!