将数据类型更改为与第二数据库相同

时间:2019-01-04 06:44:11

标签: sql sql-server database-schema sql-server-2016

我有两个相同的SQL Server数据库。 (SQL Server 2016 Developer版),其中之一具有不正确的数据类型(Ntext等),而第二个数据库具有正确的数据类型(nvarchar(n)等)。

我想更新数据库#1并将所有数据类型更改为数据库#2中使用的相应数据类型。

列名和表名相同,但数据不同。

1 个答案:

答案 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查询。