我有两个相同的SQL Server数据库。 (SQL Server 2016 Developer版),其中之一具有不正确的数据类型(Ntext
等),而第二个数据库具有正确的数据类型(nvarchar(n)
等)。
我想更新数据库#1并将所有数据类型更改为数据库#2中使用的相应数据类型。
列名和表名相同,但数据不同。
答案 0 :(得分:0)
我不确定,但是您可以从两个数据库中加入信息模式表并检查是否存在差异:
SELECT d1.TABLE_NAME, d1.COLUMN_NAME
, d1.DATA_TYPE, d2.DATA_TYPE
, d1.CHARACTER_MAXIMUM_LENGTH, d2.CHARACTER_MAXIMUM_LENGTH
FROM database2.INFORMATION_SCHEMA.COLUMNS AS d2
LEFT JOIN database1.INFORMATION_SCHEMA.COLUMNS AS d1 ON
d2.TABLE_NAME = d1.TABLE_NAME AND
d2.COLUMN_NAME = d1.COLUMN_NAME
WHERE d2.TABLE_NAME IS NULL
OR d1.DATA_TYPE <> d2.DATA_TYPE
OR d1.CHARACTER_MAXIMUM_LENGTH <> d2.CHARACTER_MAXIMUM_LENGTH
然后您可以检查结果并生成alter table查询。