我希望有一个小测试我可以运行来比较两个在表结构中几乎相同的独立数据库。
以下是我正在看的内容......
MSSQLSERVER (Instance)
|
|-- MY_DB1
|
|-- Table_A
|-- Column_Foo
|-- Column_Boo
|-- MY_DB2
|
|-- Table_A
|-- Column_Foo
|-- Column_WTF
|-- Column_Boo
原谅上面粗略图,这只是为了说明这个想法。如您所见,我们有一个SQL Server实例MSSQLSERVER
,它有两个独立的已恢复数据库。这两个数据库都有多个数据库表。我需要此测试来比较MY_DB1
和MY_DB2
数据库,并向我显示具有不同列的任何表的列表。
根据以上示例,输出将指示:
MY_DB2
|
|-- Table_A
|-- Column_WTF
它会显示Column_WTF
,因为MY_DB1
中找不到此内容。
我总是需要知道列是否是100%匹配,如果它们不匹配则它应该提供指示差异所在位置的输出。
我想用T-SQL做这件事,但是我也可以使用任何可能已经具有此功能的开源工具进行简单比较。
感谢您的帮助。
答案 0 :(得分:2)
也许是这样的
示例强>
;with cte as (
Select [Table_Catalog]
,[Table_Schema]
,[Table_Name]
,[Column_Name]
,Cnt = sum(1) over (Partition By [Table_Name],[Column_Name])
From (
Select * From [My_DB1].INFORMATION_SCHEMA.COLUMNS
Union All
Select * From [My_DB2].INFORMATION_SCHEMA.COLUMNS
) A
)
Select * From cte Where Cnt=1
答案 1 :(得分:0)
在SSMS中,右键单击数据库(MY_DB1),"脚本数据库为","创建到",文件。 重复MY_DB2。
来自(visual studio)" Developers命令提示符":devenv.exe / diff file1 file2
文件参数必须具有文件的完整路径。