将数据类型更改为与第二个数据库相同
Change datatypes to be identical to a 2nd database
我有两个相同的 SQL 服务器数据库。 (SQL Server 2016 Developer edition)其中一个数据库的数据类型不正确(Ntext
等),而第二个数据库的数据类型正确(nvarchar(n)
等)。
我想更新数据库 #1 并将所有数据类型更改为数据库 #2 中使用的相应数据类型。
列和 table 名称相同但数据不同。
我不太确定,但您可以加入来自两个数据库的信息模式 tables 并检查差异:
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
然后您可以检查结果并生成更改 table 查询。
我有两个相同的 SQL 服务器数据库。 (SQL Server 2016 Developer edition)其中一个数据库的数据类型不正确(Ntext
等),而第二个数据库的数据类型正确(nvarchar(n)
等)。
我想更新数据库 #1 并将所有数据类型更改为数据库 #2 中使用的相应数据类型。
列和 table 名称相同但数据不同。
我不太确定,但您可以加入来自两个数据库的信息模式 tables 并检查差异:
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
然后您可以检查结果并生成更改 table 查询。