こんにちは。システムの運用・開発をしているM.Iです。
Visual Studioを利用して、SQL Severのスキーマ比較やデータ比較を行う方法を紹介します。
以下のサンプルは同じインスタンスのデータベースを比較していますが、異なるサーバ、異なるインスタンスのデータベースの比較も可能です。
・スキーマ比較
「SQL Server オブジェクト エクスプローラ」から比較元データベースを選択し、右クリック⇒「スキーマ比較」を選択します。
「ターゲットの選択…」で比較先データベースを選択します。
「比較」ボタンを押下し、スキーマを比較します。
比較したデータベースに差異がなかったため、以下のような結果になりました。
比較先のデータベースのテーブルを変更して、比較確認をしてみたいと思います。
相違箇所が表示されました。
「更新」ボタンを押下し、比較先のデータベースにスキーマを反映することもできます。
・データ比較
同様にデータを比較することも可能です。
「SQL Server オブジェクト エクスプローラ」から比較元テーブルを選択し、右クリック⇒「データ比較」を選択します。
ターゲットデータベースを選択し、データ比較のオプションを選択します。
比較するテーブル、比較する項目を選択します。
同時に、複数のテーブルを比較することもできます。
更新日時など、比較対象外としたい項目を省いて比較することもできます。
比較したテーブルのデータに差異がなかったため、以下のような結果になりました。
比較先のテーブルのデータを変更して、比較確認をしてみたいと思います。
相違箇所が表示されました。
異なる項目が強調表示されます。
比較元のみにデータが存在する時は「ソース内のみ」、比較先のみにデータが存在する時は「ターゲット内のみ」に対象データが表示されます。
「ターゲットの更新」ボタンを押下し、比較先のデータベースにデータを反映することもできます。
キー項目が一致するデータを比較するため、キー項目がないテーブルはデータ比較をすることはできません。
本番環境と開発環境を比較したり、テスト結果の差分を比較したり、クエリーなどでも比較は可能ですが、簡単に確実に比較ができるので、ぜひ利用してみてください。
サンプルデータベース:Microsoftの「AdventureWorksDW2022」