Data-tier Application ファイルは、データベース スキーマの作成時の読み取り専用表現です。本質的にはデータベース スキーマとして扱われ、そのスキーマ オブジェクトを元のプロジェクトにインポートすることもできます。データベースまたはプロジェクトのスキーマと比較することも、スナップショットで定義されているスキーマを反映してデータベースまたはプロジェクトを更新することもできます。
ソース データベース プロジェクトでユーザー エラーが発生したときは、スナップショット作成時の状態にソース プロジェクトを戻すことができます。開発のさまざまな段階で、ベースラインのためにスナップショットを作成することもできます。
警告
以下に示す手順では、「接続されているデータベース開発」および「プロジェクト指向のオフライン データベース開発」に示されているこれまでの手順で作成したエンティティを使用します。
スナップショットを作成するには
ソリューション エクスプローラーで TradeDev プロジェクトを右クリックし、[データ層アプリケーション (*.dacpac)] をクリックします。
SSDT では、まずプロジェクトのビルドが試行されます。ビルド エラーがなければ、ソリューション エクスプローラーに [スナップショット] フォルダーが作成されます。フォルダー内には、"<プロジェクト名>_YYYYMMDD_HH-MM-SS.dacpac" という形式の名前で .dacpac ファイルが作成されます。
.dacpac ファイルを右クリックして、[名前の変更] をクリックします。既定のファイル名を "TradeDev1.dacpac" に変更します。
ソリューション エクスプローラーで GetProductsBySupplier 関数を右クリックし、[削除] をクリックして、この関数をプロジェクトから削除します。
これまでの手順に従い、TradeDev2.dacpac という新しいスナップショットを作成します。
スナップショットをインポートするには
ソリューション エクスプローラーで TradeDev プロジェクトを右クリックし、コンテキスト メニューの [インポート] をクリックして、[データ層アプリケーション (*.dacpac)] をクリックします。
[データ層アプリケーションのインポート] ダイアログ ボックスで、[参照] をクリックし、インポートのソースとして使用する TradeDev1.dacpac をクリックします。
現在のプロジェクトが既定のターゲットであるため、[ターゲット プロジェクト] セクションは無効になっています。[開始] をクリックしてインポートを開始します。
[概要] ページで [完了] をクリックします。ソリューション エクスプ ローラーでは、削除したテーブルがプロジェクトに復元されています。
警告
スナップショットのインポートでは、スナップショット スキーマ内のデータベース エンティティがすべて、プロジェクトにインポートされます。その結果、エンティティの複製が作成されることもあります。たとえば、各テーブルとビューには、自身の余分なコピーが <ObjectName_1> という名前で含まれています。ソリューション エクスプローラーでこれらの複製オブジェクトをそれぞれ右クリックし、[削除] をクリックしてプロジェクトから削除します。
スナップショットを比較するには
ソリューション エクスプローラーで TradeDev1.dacpac を右クリックし、[スキーマ比較] をクリックします。[スキーマ比較] ウィンドウが開きます。
このため、ソースとターゲットのスキーマを設定するために、[データ層アプリケーション ファイル] のオプションを使用します。[データ層アプリケーション ファイル] で、[ソース スキーマ] が TradeDev1.dacpac に、[ターゲット スキーマ] が TradeDev2.dacpac に設定されていることを確認します。
[OK] をクリックして比較を開始します。古いスナップショットと新しいスナップショットの相違点として、削除した関数が強調表示されます。
スキーマ比較を使用すると、異なるスナップショット間の差分を容易に特定することができます。この場合は、開発プロセスでプロジェクトがどのように進行するかを特定できます。