SQL Server: сравните столбцы в двух таблицах

Я недавно сделал миграцию от действительно старой версии некоторого приложения к текущей версии, и я столкнулся с некоторыми проблемами при миграции баз данных.

Мне нужен запрос, который мог помочь мне сравнить столбцы в двух таблицах. Я имею в виду не данные в строках, я должен сравнить столбцы сами для выяснения, какие изменения в структуре таблицы я пропустил.

9
задан marc_s 11 March 2010 в 20:32
поделиться

2 ответа

посмотрите Red Gate SQL Compare

В противном случае вот начало (для sql server)

select 
 so.name as [table],
 sc.name as [column],
 sc.type, sc.length, sc.prec, sc.scale, sc.collation
from 
 sysobjects so
 inner join syscolumns sc ON so.id = sc.id

where so.type='u'

order by so.name, sc.colorder

вы можете посмотреть в таблицах

 - INFORMATION_SCHEMA.TABLES
 - INFORMATION_SCHEMA.COLUMNS
 - INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
 - INFORMATION_SCHEMA.TABLE_CONSTRAINTS
 - INFORMATION_SCHEMA.KEY_COLUMN_USAGE

, если вы хотите углубиться ..

[обновление]

Использование таблиц INFORMATION_SCHEMA

SELECT
 [table].TABLE_NAME AS [Table_Name],
 [column].COLUMN_NAME AS [Column_Name],
 COLUMNPROPERTY(object_id([table].[TABLE_NAME]), [column].[COLUMN_NAME], 'IsIdentity') AS [identity],
 [column].DATA_TYPE AS [datatype],
 [column].CHARACTER_MAXIMUM_LENGTH AS [Character_Length],
 [column].NUMERIC_PRECISION AS Numeric_precision,
 [column].ORDINAL_POSITION AS [order],
 [column].COLUMN_DEFAULT AS [defaultvalue],
 [column].IS_NULLABLE AS [nullable]
FROM 
 INFORMATION_SCHEMA.TABLES [table] INNER JOIN 
 INFORMATION_SCHEMA.COLUMNS [column] ON [table].TABLE_NAME = [column].TABLE_NAME
WHERE
 [table].TABLE_TYPE = 'BASE TABLE'
 AND [table].TABLE_NAME <> 'sysdiagrams'
ORDER BY 
 [table].TABLE_NAME ASC, 
 [column].ORDINAL_POSITION ASC
12
ответ дан 4 December 2019 в 06:56
поделиться

Действительно, это большой сценарий. :)

Использовать сравнение sql с красными воротами. Они предлагают вам 14-дневную бесплатную пробную версию

. Если вам действительно нужен сценарий, это может быть текст, и вы можете сравнить их с помощью любого средства сравнения текста.

6
ответ дан 4 December 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: