次の方法で共有


1 つ以上のテーブルのデータを参照データベースのデータと比較して同期する

このトピックの内容は、次の製品に該当します。

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

トピック該当 トピック該当 トピック該当なし トピック該当なし

Visual Studio を使用することで、ソース データベースとターゲット データベースのデータを比較し、比較するテーブルを指定できます。 データを確認し、どの変更を同期するかを決定できます。 その後、ターゲットを更新してデータベースを同期したり、更新スクリプトを Transact-SQL エディターやファイルにエクスポートしたりできます。

たとえば、データベースを同期し、本番データのコピーでステージング サーバーを更新できます。 1 つ以上のテーブルを同期し、そのテーブルに別のデータベースの参照データを読み込むこともできます。 新たな形式の検証として、テストを実行する前と後にデータを比較することもできます。

2 つのデータベースのデータを比較することはできますが、データベース プロジェクト (.dbproj) または .dbschema ファイルにはデータが含まれていないため、比較対象に指定することはできません。

要件

テーブルまたはビューのデータを比較する場合、ソース データベースとターゲット データベースのテーブルまたはビューは、次のような共通の属性を持っている必要があります。 次の基準を満たしていないテーブルとビューは比較されず、新しいデータの比較ウィザードの 2 ページ目に表示されません。

  • テーブルには、互換性のあるデータ型が設定された一致する列名が必要です。

    テーブル、ビュー、および所有者の名前は、大文字と小文字が区別されます。 スキーマの詳細については、「データベース スキーマの比較と同期」を参照してください。

  • テーブルは、主キー、一意のインデックス、または一意の制約が同じである必要があります。

  • ビューは、一意のクラスター化インデックスが同じである必要があります。

  • テーブルとビューは、名前が同じである場合にのみ比較できます。

各オブジェクトには、対応する他のオブジェクトを決定するキーまたはインデックスがあります。 ただし、各テーブルまたはビューには複数の主キー、一意のインデックス、または UNIQUE 制約を設定できます。 したがって、使用するキー、インデックス、または制約を指定できます。

一般的なタスク

次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。

一般的なタスク

関連する参照先

実習を行う: 機能紹介のチュートリアルを実施することで、2 つのデータベースのデータを比較する方法を理解することができます。

データの比較方法を制御するオプションを設定する: データを比較する場合、ID 列を無視し、トリガーを無効にし、外部キーを無効にしてもかまいません。 更新スクリプトから主キー、インデックス、および UNIQUE 制約を削除することもできます。

テーブルのデータを比較し、必要に応じてソースに合わせてターゲットを更新する: 比較するソースとターゲット データベースを指定して比較を実行した後、結果を [データ ウィンドウ] ウィンドウに表示できます。 相違の詳細だけでなく、データの同期に使用できる更新スクリプトも表示できます。 2 つのデータベースの相違を確認した後、相違ごとにアクションを指定できます。 その後、ターゲットを更新したり、更新スクリプトを Transact-SQL エディターまたはファイルにエクスポートしたりできます。 変更を適用する前に確認できるように、スクリプトをエクスポートすることもできます。

問題をトラブルシューティングする: データベース スキーマを比較して同期するときに発生する可能性がある一般的な問題をトラブルシューティングする方法の詳細について学習できます。

比較結果について

次の表では、[データ比較] ウィンドウの 5 つの列について説明します。

説明

オブジェクト

テーブルまたはビューの名前と、更新を書き込むとき、または更新スクリプトをエクスポートするときにターゲットを同期する必要があるかどうかを示すチェック ボックスが表示されます。 データを含まないテーブルまたはビューのチェック ボックスは使用できません。

異なるレコード

キーが同じで、ソースと異なるデータを含むターゲット内のレコード数を表示します。 更新を書き込むとき、または更新スクリプトをエクスポートするときに更新対象としてマークされているレコード数は、かっこで囲まれます。

ソースのみ

ターゲットで発生しないソース内のレコード数を表示します。 更新を書き込むとき、または更新スクリプトをエクスポートするときに追加対象としてマークされているレコード数は、かっこで囲まれます。

ターゲットのみ

ソースで発生しないターゲット内のレコード数を表示します。 更新を書き込むとき、または更新スクリプトをエクスポートするときに削除対象としてマークされているレコード数は、かっこで囲まれます。

同一のレコード

キーが同じで、ソースと同じデータを含むターゲット内のレコード数を表示します。 これらのレコードは、更新を書き込むとき、または更新スクリプトをエクスポートするときには更新されません。

テーブルとビューの詳細

[データ比較] ウィンドウのテーブルまたはビューをクリックすると、そのテーブルまたはビューに含まれるすべての行が詳細ペインに表示されます。 詳細ペインの各タブには、異なるカテゴリ ([異なるレコード]、[ソースのみ]、[ターゲットのみ]、[同一のレコード]) が表示されます。 行ごとに、対応するチェック ボックスをオンまたはオフにして、その変更を更新スクリプトに含めるかどうかを指定できます。

関連するシナリオ

  • データベース スキーマの比較と同期
    データベース、データベース プロジェクト (.dbproj)、または .dbschema ファイルのスキーマを比較した後、更新スクリプトに含める変更を指定できます。