こんにちは。システムの運用・開発をしているM.Iです。


Visual Studioを利用して、SQL Severのスキーマ比較やデータ比較を行う方法を紹介します。
以下のサンプルは同じインスタンスのデータベースを比較していますが、異なるサーバ、異なるインスタンスのデータベースの比較も可能です。


・スキーマ比較

「SQL Server オブジェクト エクスプローラ」から比較元データベースを選択し、右クリック⇒「スキーマ比較」を選択します。


「ターゲットの選択…」で比較先データベースを選択します。


「比較」ボタンを押下し、スキーマを比較します。
比較したデータベースに差異がなかったため、以下のような結果になりました。


比較先のデータベースのテーブルを変更して、比較確認をしてみたいと思います。


相違箇所が表示されました。


「更新」ボタンを押下し、比較先のデータベースにスキーマを反映することもできます。


・データ比較

同様にデータを比較することも可能です。
「SQL Server オブジェクト エクスプローラ」から比較元テーブルを選択し、右クリック⇒「データ比較」を選択します。


ターゲットデータベースを選択し、データ比較のオプションを選択します。


比較するテーブル、比較する項目を選択します。
同時に、複数のテーブルを比較することもできます。
更新日時など、比較対象外としたい項目を省いて比較することもできます。


比較したテーブルのデータに差異がなかったため、以下のような結果になりました。


比較先のテーブルのデータを変更して、比較確認をしてみたいと思います。


相違箇所が表示されました。
異なる項目が強調表示されます。


比較元のみにデータが存在する時は「ソース内のみ」、比較先のみにデータが存在する時は「ターゲット内のみ」に対象データが表示されます。


「ターゲットの更新」ボタンを押下し、比較先のデータベースにデータを反映することもできます。
キー項目が一致するデータを比較するため、キー項目がないテーブルはデータ比較をすることはできません。


本番環境と開発環境を比較したり、テスト結果の差分を比較したり、クエリーなどでも比較は可能ですが、簡単に確実に比較ができるので、ぜひ利用してみてください。


サンプルデータベース:Microsoftの「AdventureWorksDW2022」