1 つ以上のテーブル内のデータと参照データベース内のデータを比較および同期する
Visual Studio Team System Database Edition を使用すると、ソース データベース内のデータとターゲット データベース内のデータを比較し、一致する必要がある値を指定できます。 その後、ターゲットを更新してデータベースを同期するか、更新スクリプトを Transact-SQL (T-SQL) エディタまたはファイルにエクスポートできます。
たとえば、データベースを同期して、ステージング サーバーを本番データのコピーで更新できます。 1 つ以上のテーブルを同期し、別のデータベースから参照データを読み込むこともできます。 さらに、検証の追加フォームとして、テストの前後にデータを比較することもできます。
2 つのデータベース内のデータを比較できますが、データベース プロジェクト (.dbproj) または .dbschema ファイルにはデータが含まれていないため、比較用に指定することはできません。
必要条件
テーブルまたはビュー内のデータを比較する場合、ソース データベースとターゲット データベースのテーブルまたはビューは、次のような共通の属性を持っている必要があります。 次の基準を満たしていないテーブルとビューは比較されず、新しいデータの比較ウィザードの 2 ページ目に表示されません。
テーブルの列の名前が一致していて、そのデータ型に互換性がある必要があります。
テーブル、ビュー、および所有者の名前は、大文字と小文字が区別されます。 スキーマの詳細については、「データベース スキーマを比較および同期する」を参照してください。
テーブルは、主キー、一意のインデックス、または一意の制約が同じである必要があります。
ビューは、一意のクラスタ化インデックスが同じである必要があります。
テーブルとビューは、名前が同じである場合にのみ比較できます。
各オブジェクトには、対応する他のオブジェクトを決定するキーまたはインデックスがあります。 ただし、各テーブルまたはビューは複数の主キー、一意のインデックス、または一意の制約を持つことができます。 したがって、使用するキー、インデックス、または制約を指定する必要がある場合があります。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
一般的なタスク |
関連する参照先 |
---|---|
実習を行う : 入門チュートリアルに従って作業すると、2 つのデータベース内のデータを比較する方法を習得できます。 |
|
データの比較方法を制御するオプションを設定する : データを比較する場合、ID 列を安全に無視し、トリガと外部キーを無効にできます。 更新スクリプトから主キー、インデックス、および一意の制約を省くこともできます。 |
|
テーブル内のデータを比較する : 比較するソース データベースとターゲット データベースを指定して比較を実行した後、結果を [データ比較] ウィンドウに表示できます。 相違点の詳細だけでなく、データの同期に使用する更新スクリプトも表示できます。 |
比較結果について |
ソースに一致するようにターゲットを更新する : 2 つのデータベースの違いを識別した後、それぞれの相違点に対するアクションを指定できます。 その後、ターゲットを更新するか、更新スクリプトを T-SQL エディタまたはファイルにエクスポートできます。 変更を適用する前にスクリプトを確認できるように、スクリプトをエクスポートすることもできます。 |
|
問題をトラブルシューティングする : データベース スキーマを比較して同期するときに発生する可能性がある問題をトラブルシューティングする方法について、さらに詳しく学習できます。 |
比較結果について
次の表では、[データ比較] ウィンドウの 5 つの列について説明します。
列 |
説明 |
---|---|
オブジェクト |
テーブルまたはビューの名前、および更新を書き込むときまたは更新スクリプトをエクスポートするときにターゲットを同期するかどうかを示すチェック ボックスが表示されます。 データを含まないテーブルまたはビューでは、チェック ボックスは使用できません。 |
異なるレコード |
ソースと同じキーを持ち、データが異なるターゲット内のレコード数が表示されます。 更新を書き込むときまたは更新スクリプトをエクスポートするときに更新対象として指定されるレコード数は、かっこで囲まれて表示されます。 |
ソースのみ |
ターゲットでは発生しないソース内のレコード数が表示されます。 更新を書き込むときまたは更新スクリプトをエクスポートするときに追加対象として指定されるレコード数は、かっこで囲まれて表示されます。 |
ターゲットのみ |
ソースでは発生しないターゲット内のレコード数が表示されます。 更新を書き込むときまたは更新スクリプトをエクスポートするときに削除対象として指定されるレコード数は、かっこで囲まれて表示されます。 |
同一のレコード |
ソースと同じキーおよびデータを持つターゲット内のレコード数が表示されます。 これらのレコードは、更新を書き込むときまたは更新スクリプトをエクスポートするときには更新されません。 |
テーブルおよびビューの詳細
[データ比較] ウィンドウでテーブルまたはビューをクリックすると、テーブルまたはビューに含まれるすべての行が詳細ペインに表示されます。 詳細ペインの各タブには、個別のカテゴリ (異なるレコード、ソースのみ、ターゲットのみ、同一のレコード) が表示されます。 行ごとに、更新スクリプト内の変更を含めるかどうかを示すために、対応するチェック ボックスをオンまたはオフにします。
関連するシナリオ
- データベース スキーマを比較および同期する
データベースのスキーマ、データベース プロジェクト (.dbproj)、または .dbschema ファイルを比較した後、更新スクリプトに含める変更を指定できます。