DAC Fx と宣言型データベース開発の使用に飛躍することに興奮しています。私にとっての大きな障害は、複数の異なるバージョンのスキーマ間で複雑なデータ移行を処理する方法です。以前は、すべてのアップグレード スクリプトを順番に実行するだけで済み、データ移行時にスキーマが正しい状態にあることが保証されていました。アップグレード パスが動的な場合、これはどのように機能しますか?
たとえば、既存のインスタンスにいくつかのバージョンのスキーマ (DACPAC1-4) があるとします。
- DACPAC1: tableA が存在し、重要なクライアント データが含まれています
- DACPAC2: tableA は廃止され、tableB と正規化された tableC に置き換えられました。新しい tableD を追加します
- 配置後スクリプト: データを tableA から新しい tableB および tableC に移動します。ドロップテーブルA
- DACPAC3: tableC に新しい null 許容 columnX がある
- デプロイ後スクリプト: tableD に基づいて null 許容列を設定します
- DACPAC4: tableC.columnX は null 非許容です
DACPAC1 ~ 3 サーバーの最新の DACPAC4 へのアップグレードをサポートできるようにする必要がある場合、どの DACPAC が現在ターゲット上にあるかを検出し、データ移行を正しく処理するのに十分なほど巧妙な方法で、展開前および展開後のスクリプトを作成する必要があります。順番にステップします。さらに、最初に作成した単純なデプロイ後のスクリプトを単純に再利用することはできません。これらのスクリプトはスキーマの中間バージョンに依存しているためです。
アドバイスをよろしくお願いします!