2012-02-13 6 views
0

非ユニコードデータベーステーブルからユニコードデータベーステーブルにデータを移行しています。 約40個のテーブルがあり、移行されたデータに対して少なくとも行数の検証を行う必要があります。SQL Server 2005でのデータ移行の検証

すべてのテーブルを検証するために同じコードを繰り返し書くのは間違った方法です。

データ移行を検証する正しい方法は何ですか?

私はT-SQLを使用しており、行数検査を行うためのコードサンプルを探しています。

答えて

0

このクエリは、2つのデータベースのテーブルを比較し、行数が異なるか、データベースの1つにテーブルが存在しないものを返します。 AAABBBをシステムのデータベース名に置き換えてください。

SELECT 
    DbB.Name DbBName, DbA.Rows DbARows, DbB.Rows DbBRows 
FROM 
    (
    SELECT DISTINCT p.rows Rows, tbl.name Name 
    FROM AAA.sys.tables AS tbl INNER JOIN AAA.sys.partitions AS p ON p.object_id = tbl.object_id 
    ) DbA 
    FULL OUTER JOIN 
    (
    SELECT DISTINCT p.rows Rows, tbl.name Name 
    FROM BBB.sys.tables AS tbl INNER JOIN BBB.sys.partitions AS p ON p.object_id = tbl.object_id 
    ) DbB ON DbA.Name = DbB.Name 
WHERE 
    DbA.Rows <> DbB.Rows OR DbA.Rows IS NULL OR DbB.Rows IS NULL 

データベースが異なるサーバー上にある場合、Linked Serverを作成して、完全修飾テーブル名を使用します。

関連する問題