2

自動データ層アプリケーション(DACPAC)のアップグレードでDacUpgradeOptions.IgnoreDataLossプロパティを設定するベストプラクティスは何ですか? MSDNのドキュメント(link)に基づいて継続的な展開でDacUpgradeOptions.IgnoreDataLossフラグを設定するためのベストプラクティス?

IgnoreDataLossであれば、アップグレードは、操作のいくつかは、データの損失につながる場合でも続行されます。 の場合、これらの操作はアップグレードを終了します。たとえば、現在のデータベース内のテーブルが新しいDACのスキーマに存在しない場合、Trueが指定されているとテーブルは削除されます。これのデフォルト値はTrueです。

ただし、すべてのデータベース変更がパイプライン(CI - >テスト - > UIテスト)に自動的に展開され、最終的にはプロダクション環境に展開される継続的な配信環境では、 IgnoreDataLossFalseです。これは、本番データベースでデータの損失やドリフトが発生しないようにするためです。 IgnoreDataLossFalseであり、開発者がデータの損失をもたらすデータベース変更をコミットすると、CI /テストビルドが失敗し、この変更がプロダクションに達する前にこれをキャッチできます。

このアプローチには問題がありますが、は、データ損失が意図的な場合は回です。たとえば、使用されていない特定のテーブルを削除する必要があるかもしれません。 IgnoreDataLossFalseの場合、これはビルドに失敗し、潜在的なデータ損失が検出されるため(たとえそのような損失が意図的であっても)、DACPACの変更は適用されません。このシナリオでは、IgnoreDataLoss真のとなります。

これは特に連続して自動的に展開している環境では、何がベストプラクティスになるのだろうかと思います。どんな提案も大歓迎です。ありがとう!

答えて

2

ほとんどの場合、IgnoreDataLossをfalseに設定できます。これは、誤ってデータベースを変更したり、データが失われたりしないようにするのに役立ちます。テーブルを削除する場合は、テーブルを手動で削除するか(DACPACを使用しないでください)、または、特定のアップグレード操作で一時的にIgnoreDataLossをtrueに設定することもできます。

よろしく、

明徐。

関連する問題