2

SQL Server 2008 R2 を使用しています。

2 つの異なるデータベースMasterとを作成しましTestた。どちらも最初は同じテーブルと列を持っていますが、その後、master安定した環境にtest使用され、進行中の開発に使用されます。

開発のために、いくつかの列のデータ型を変更し、いくつかの新しい列をテーブルに追加し、いくつかの列を削除し、いくつかの新しいテーブルを追加し、さらに削除しました。Masterと同じものを作りたいと思いtestます。Master機密性の高いライブ データが含まれているため、削除して再作成することはできません。したがって、列名、データ型、制約、および長さとともにmaster、すべてのテーブルを比較する必要があります。test解決策はありますか?

4

2 に答える 2

7

自分で解決しました:

SELECT  
    T.[name] AS [table_name], AC.[name] AS [column_name],  
        TY.[name] AS system_data_type
FROM    [master].sys.[tables] AS T  
    INNER JOIN [master].sys.[all_columns] AC ON T.[object_id] = AC.[object_id] 
    INNER JOIN [master].sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id]

EXCEPT

SELECT  
    T.[name] AS [table_name], AC.[name] AS [column_name],  
        TY.[name] AS system_data_type
FROM    test.sys.[tables] AS T  
    INNER JOIN test.sys.[all_columns] AC ON T.[object_id] = AC.[object_id] 
    INNER JOIN test.sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id]

これにより、テーブル名、列名、およびマスターにあるが存在しないかテストとは異なるデータ型とともに列のリストが表示されます。

于 2012-06-29T07:16:29.870 に答える
0

検索したことはありますか?

http://www.codeproject.com/Articles/205011/SQL-Server-Database-Comparison-Tool

于 2012-06-27T07:26:25.613 に答える