チュートリアル: 2 つのデータベースのデータの比較

このチュートリアルでは、2 つのデータベースのデータを比較し、相違点に基づいてデータ操作言語 (DML: Data Manipulation Language) スクリプトを生成し、このスクリプトを使ってソースのデータをターゲットに書き込みます。

このチュートリアルでは、次の手順を行います。

  • 2 つのデータベースのデータの比較。 この手順では、データの相違点を検出してグリッドに表示し、相違点を表す DML スクリプトを生成します。

  • ターゲット データベースの更新。 この手順では、ソースに一致するようにターゲットを更新する際に使用できる 2 つの方法を紹介します。

前提条件

このチュートリアルを実行するには、次の製品を使用できる状態にしておく必要があります。

  • Microsoft SQL Server 2000 または Microsoft SQL Server 2005

  • Visual Studio Team System Database Edition

このチュートリアルを開始する前に、「チュートリアル : 2 つのデータベースのスキーマを比較する」の各手順を実行してください。 このチュートリアルを実行すると、次の 2 つのデータベースが用意されます。

  • ソースである Northwind は元の構造と元のデータを保持しています。

  • ターゲットである EmptyNW は、スキーマを比較するためにチュートリアルで作成しました。 Northwind データベースのスキーマのみを EmptyNW に適用しました。 したがって、EmptyNW にはデータは格納されていません。

ソース データベースとターゲット データベースからデータを読み取るためのアクセス許可が必要です。

2 つのデータベースのデータの比較

このセクションでは、2 つの手順について説明します。 最初の手順では、データベースを比較し、結果を生成します。 2 つ目の手順では、この結果を確認します。

2 つのデータベースのデータを比較するには

  1. [データ] メニューの [データ比較] をポイントし、[新しいデータの比較] をクリックします。

    新しいデータの比較ウィザードが表示されます。 また、[データ比較] ウィンドウがバックグラウンドで開き、DataCompare1 などの名前が Visual Studio によって自動的に割り当てられます。

  2. ソース データベース (Northwind) を選択します。 [ソース データベース] ボックスの一覧に、選択したデータベースの名前が Server.Northwind.dbo の形式で表示されます。

    [ソース データベース] ボックスの一覧が空の場合、[新しい接続] をクリックします。 [接続のプロパティ] ダイアログ ボックスで、Northwind データベースが常駐するサーバーの名前と、このデータベースに接続するときに使用する認証の種類を指定します。[OK] をクリックして [接続のプロパティ] ダイアログ ボックスを閉じ、新しいデータの比較ウィザードに戻ります。

  3. ターゲット データベース (EmptyNW) を選択します。 [ターゲット データベース] ボックスの一覧に、選択したデータベースの名前が Server.EmptyNW.dbo の形式で表示されます。

    [ターゲット データベース] ボックスの一覧が空の場合、[新しい接続] をクリックします。 [接続のプロパティ] ダイアログ ボックスで、EmptyNW データベースが常駐するサーバーの名前と、このデータベースに接続するときに使用する認証の種類を指定します。[OK] をクリックして [接続のプロパティ] ダイアログ ボックスを閉じ、新しいデータの比較ウィザードに戻ります。

  4. 比較結果に表示するレコードを制限する必要がある場合は、[データ比較のオプション] を指定します。 このチュートリアルでは、既定値を使用してすべてのレコードを表示します。

  5. [次へ] をクリックします。

    新しいデータの比較ウィザードの 2 ページ目では、比較するテーブルおよびビューの選択内容を詳細に指定できます。 [テーブル] ノードの下にデータベース内のすべてのテーブルが一覧表示されます。 各テーブルを展開すると、そのテーブルに含まれている列が表示されます。 既定では、すべてのテーブルおよび列が選択され、比較されます。 一覧の各テーブルまたはビューについて、レコードを比較するために使用するキーが表示されます。 比較を行うには、テーブルとビューが特定の条件を満たしている必要があります。 詳細については、「1 つ以上のテーブル内のデータと参照データベース内のデータを比較および同期する」を参照してください。

    Aa833273.alert_note(ja-jp,VS.90).gifメモ :

    どのテーブルとビューを比較するかをカスタマイズしない場合は、[次へ] ではなく [完了] をクリックします。

  6. 特定のテーブルまたは列を除外する場合は、該当するチェック ボックスをオフにします。 特定のテーブルまたは列を含める場合は、該当するチェック ボックスをオンにします。

  7. [完了] をクリックして比較を開始します。

    比較が開始されます。

    Aa833273.alert_note(ja-jp,VS.90).gifメモ :

    進行中のデータ比較操作を停止するには、[データ比較] ツールバーの [停止] をクリックします。

    比較が終わると、2 つのデータベース間のデータの相違点が [データ比較] ウィンドウの表に表示されます。 比較結果を表示する方法の詳細については、次の手順を参照してください。

    必要に応じて、ソースのデータと一致するようにターゲットのデータを更新できます。 詳細については、「ターゲット データベースの更新」を参照してください。

データの比較結果を表示するには

  1. [dbo].[Orders] 行をクリックします。

    レコード ビュー ペインのタブの名前が、それぞれの種類のレコード件数を含む名前 ([異なるレコード (0)]、[ソースのみ (830)]、[ターゲットのみ (0)]、および [同一のレコード (0)]) に変わります。

  2. [ソースのみ (830)] タブをクリックします。

    [ソースのみ (830)] タブのそれぞれの行と列は、[dbo].[Orders] テーブルの行と列に対応しています。

    Aa833273.alert_note(ja-jp,VS.90).gifメモ :

    このタブを使用すると、ターゲットに反映するデータを制御できます。

ターゲットの更新

[データ比較] ウィンドウからターゲットのデータを直接更新する方法と、Transact-SQL (T-SQL) エディタを使用する方法があります。 このセクションでは、この 2 つの方法について説明します。

2 つのデータを比較すると、[データ比較] ウィンドウのグリッドに相違点が表示されます。 [オブジェクト] 列の各テーブルまたはビューに対応するチェック ボックスは、そのオブジェクトが更新操作に含まれるかどうかを示します。 各列には、データ比較で示された変更の種類が表示されます。 この例の場合、ターゲットには既定のオブジェクトしか格納されていないので、適用される変更は [ソースのみ] 列のみに表示されます。

データ比較オプションによる変更の書き込み

[データ比較] ウィンドウに表示された更新アクションを使ってターゲットのデータを更新するには、次の手順を実行します。

  • ターゲット データベースの更新

T-SQL エディタによる変更の書き込み

更新スクリプトをエクスポートして確認し、変更した後で、これを使ってターゲットを変更するには、次の手順を実行します。

  • 同期スクリプトの確認と実行

ターゲット データベースの更新

ターゲットを更新するには

  1. [データ比較] ウィンドウで、[dbo].[Products] をクリックします。

  2. 詳細ペインで [ソースのみ] をクリックします。

    最初の 2 行には、Chai および Chang という名前が付いています。

    詳細ペインのステータス バーに、ソースに不足しているレコードの数、およびターゲットから削除されるレコードの数が表示されます。 この 2 つの数は一致します。

  3. Chai の行のチェック ボックスをオフにします。

    詳細ペインのステータス バーで、削除されるレコードの数が 1 つ減ります。 ソースに不足しているレコードの数とは一致しなくなりました。

  4. [データ比較] ウィンドウで [更新の書き込み] をクリックします。

    [データ比較] ウィンドウに示された更新アクションが実施されます。 この同期により、ソースに一致するようにターゲットが変更されます。

    Aa833273.alert_note(ja-jp,VS.90).gifメモ :

    ターゲットを更新している途中で [ターゲットへの書き込みの停止] をクリックすると、操作をキャンセルできます。

同期スクリプトの確認と実行

同期スクリプトを確認するには

  1. [データ比較] ツール バーで、[エディタにエクスポート] をクリックします。

    T-SQL エディタが接続モードで開き、T-SQL スクリプトが表示されます。このウィンドウには、Server.Northwind - DataUpdate_EmptyNW_1.sql などの名前が付いています。 書き込みアクセス権が付与されているので、このウィンドウでスクリプトを変更できます。 更新スクリプトを保存するには、[保存] をクリックします。

  2. 2 つのデータベースのデータを同期するために、このスクリプトを実行します。スクリプトを実行するには、[SQL の実行] をクリックするか、F5 キーを押します。

    Aa833273.alert_note(ja-jp,VS.90).gifメモ :

    スクリプトを実行している途中で [クエリ実行のキャンセル] をクリックするか、Alt キーを押しながら Break キーを押すと、操作をキャンセルできます。

参照

処理手順

方法 : データベース スキーマを比較する

方法 : 2 つのデータベースのデータを比較する

概念

データベース スキーマを比較および同期する

Database Edition の用語の概要