SQL Server 2005数据库比较

时间:2014-08-12 05:00:11

标签: sql sql-server database

我正在开发一个数据集中化项目。我必须将数据从两个数据库传输到第三个新创建的主数据库。现有数据库保存相同类型的数据,表格相同等。但在此之前,我需要检查现有两个数据库中的主表是否是相同的,即列名,数字等是两个数据库中两个相同表的相同。 对于例如两个数据库都有一个名为SROMaster的表。我需要检查db1中的SROMaster是否与db2中的SROMaster保持相同的列。有人能帮我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

要检查单个表,您可以在两个数据库上发出转换表以创建脚本命令,并手动比较结果。

您可能还需要使用一些判断:兼容的是什么,即列的顺序是否相同?根据您计划转换它的方式,这对您来说是否重要。

如果要比较大量的表,则不希望手动执行此操作。有这方面的工具,或者您可以通过在系统目录中运行proc来推销自己。

鉴于你在问这个问题,我怀疑你最好找一个现有的工具来进行繁重的表格比较。这不被认为是堆栈溢出问题。

答案 1 :(得分:0)

不确定您正在使用的平台/语言 - 但无论如何,要测试给定的表是否存在,您可以使用此T-SQL来完成这项工作:

SELECT t.*
FROM sys.tables t
WHERE t.Name = 'SROMaster'

这将返回一行,其中包含有关该表的所有信息 - 如果存在 - 否则您无法返回。

获得表后,您可以使用以下方法检查表中的列:

SELECT c.*
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.Name = 'SROMaster'
ORDER BY c.column_id

您将获得包含相关信息的行数据集 - 比较您要查看的两个列表是否在两个表中都有相同的列{{1} } table。