获取2个数据库之间的列差异(SQL Server)

时间:2018-03-13 16:18:19

标签: sql sql-server

我有2个数据库几乎彼此相同。但是,对于新数据库中的某些表,它们似乎缺少旧数据库中的列。

在两个数据库之间查看表中列之间差异的最佳方法是什么?具体来说,我需要查看旧数据库中AREN&T; T列中哪些列是旧数据库中的列。

我已经尝试过这样做,但我找到的大部分内容要么不是我需要的东西,要么就是"记录"。

4 个答案:

答案 0 :(得分:2)

您可以使用sys表查询数据库中的列,并比较结果集。此脚本假定您的旧数据库具有所需的所有列。

;WITH old_db_columns AS (
SELECT c.object_id, c.column_id, c.name AS column_name, t.name AS table_name
FROM old_db.sys.tables t 
INNER JOIN old_db.sys.columns c 
    ON t.object_id = c.object_id
)
, new_db_columns AS (
    SELECT c.object_id, c.column_id, c.name AS column_name, t.name AS table_name
    FROM new_db.sys.tables t 
    INNER JOIN new_db.sys.columns c 
        ON t.object_id = c.object_id
        )

SELECT * 
FROM old_db_columns o
WHERE NOT EXISTS (
SELECT 1
FROM new_db_columns n
WHERE n.table_name = o.table_name
AND n.column_name= o.column_name)

答案 1 :(得分:1)

您可以使用Red Gate的SQL Compare和SQL Data Compare工具来比较和同步数据库架构和数据。

答案 2 :(得分:0)

您可以生成表的create语句,并可以使用任何diff工具对它们进行比较。

答案 3 :(得分:0)

查看该视频:VS Comparision

Visual Studio具有内置功能,您可以进行数据比较,架构比较,如果您需要重新调整差异,它将在脚本中为您生成差异。