方法:プロジェクトのスナップショットを作成する
データ層アプリケーション ファイルは、データベース スキーマの作成時点の読み取り専用表現です。 本質的にはデータベース スキーマとして扱われ、そのスキーマ オブジェクトを元のプロジェクトにインポートすることもできます。 データベースまたはプロジェクトのスキーマと比較することも、スナップショットで定義されているスキーマを反映してデータベースまたはプロジェクトを更新することもできます。
ソース データベース プロジェクトでユーザー エラーが発生したときは、スナップショット作成時の状態にソース プロジェクトを戻すことができます。 開発のさまざまな段階で、ベースラインのためにスナップショットを作成することもできます。
スナップショットを作成するには
ソリューション エクスプローラーで TradeDev プロジェクトを右クリックし、[データ層アプリケーション (*.dacpac)] をクリックします。
SSDT では、まずプロジェクトのビルドが試行されます。 ビルド エラーがなければ、[ソリューション エクスプローラー] に [スナップショット] フォルダーが作成されます。 フォルダー内には、SSDT によって、"<Project Name>_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] を選択して比較を開始します。 古いスナップショットと新しいスナップショットの相違点として、削除した関数が強調表示されます。
スキーマ比較を使用すると、異なるスナップショット間の差分を容易に特定することができます。 この場合は、開発プロセスでプロジェクトがどのように進行するかを特定できます。