我有2个数据库几乎彼此相同。但是,对于新数据库中的某些表,它们似乎缺少旧数据库中的列。
在两个数据库之间查看表中列之间差异的最佳方法是什么?具体来说,我需要查看旧数据库中AREN&T; T列中哪些列是旧数据库中的列。
我已经尝试过这样做,但我找到的大部分内容要么不是我需要的东西,要么就是"记录"。
答案 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具有内置功能,您可以进行数据比较,架构比较,如果您需要重新调整差异,它将在脚本中为您生成差异。