考虑到我们在2年前有一个Windows应用程序的数据库,现在我们已经在数据库中改变了很多东西,所以存在差异,我们不知道有什么不同。
我不想使用像Red Gate比较工具这样的比较工具。
在新数据库中查看新列的最佳方法是什么:
查询结果如:
New Db Name | Schema | Table Name | Column Name | Default Value | IsNullable | DataType
NewDb | dbo | myTable | newColumn | '' | No | nvarchar(30)
谢谢
答案 0 :(得分:0)
旧数据库中的列但未更改新值或默认值,可空和数据类型:
SELECT t1.*,t2.* FROM [OldDb].[INFORMATION_SCHEMA].[COLUMNS] t1
LEFT JOIN [NewDb].[INFORMATION_SCHEMA].[COLUMNS] t2
ON t1.COLUMN_NAME= t2.COLUMN_NAME
WHERE t2.COLUMN_NAME IS NULL
or
(t1.Table_name=t2.Table_name
AND t1.column_name = t2.column_name
AND (t1.data_type != t2.data_type
or t1.is_nullable != t2.is_nullable
or t1.character_maximum_length != t2.character_maximum_length
or t1.column_default != t2.column_default))
ORDER BY t1.COLUMN_NAME
新数据库中的列但不是旧的列:
您可以在查询中使用[NewDb]更改[OldDb]位置
我写了这个问题和答案,因为我需要这个,而且我花了很多时间在这上面。
所以我希望每个人都能轻松找到并使用它:)。