2

DacUpgradeOptions.IgnoreDataLoss自動データ層アプリケーション (DACPAC) アップグレードでプロパティを設定するベスト プラクティスは何ですか?

MSDN のドキュメント (リンク) に基づいて、IgnoreDataLossTrueの場合、一部の操作でデータが失われた場合でもアップグレードが続行されます。Falseの場合、これらの操作によってアップグレードが終了します。たとえば、現在のデータベースのテーブルが新しい DAC のスキーマに存在しない場合、True が指定されている場合、そのテーブルは削除されます。このデフォルト値はTrueです。

ただし、すべてのデータベースの変更が自動的にパイプライン (CI -> テスト -> UI-テスト) に展開され、最終的に運用環境に展開される継続的デリバリーの環境では、設定する安全対策IgnoreDataLossFalseであるように思われます。本番データベースでデータの損失やドリフトが発生することは望ましくありません。がFalseIgnoreDataLossで、開発者がデータ損失をもたらすデータベース変更をコミットすると、CI/テスト ビルドは失敗し、この変更が本番環境に到達する前にこれをキャッチできます。

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

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

4

1 に答える 1

1

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

よろしくお願いします、

明徐。

于 2012-04-30T05:12:23.650 に答える