Различаем две таблицы в SQL Server и генерируем DML для настройки одной - PullRequest
1 голос
/ 06 января 2011

У меня есть две таблицы; один - более старая версия второго. Я хотел бы добавить поля из нового во второе. Есть ли простой способ сделать это без разбора полей вручную (их много)?

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

Спасибо!

PS SQL Server 2005.

Ответы [ 3 ]

3 голосов
/ 06 января 2011

Это покажет столбцы в Table1, которых нет в Table2.

SELECT *
FROM syscolumns
WHERE ID = Object_ID('Table1') Name Not IN (SELECT Name from sysColumns where ID = Object_ID('Table2'))

Взять имя, длину, тип xtype и другие поля из syscolumns, чтобы превратить его в оператор DDL, довольно просто

SELECT 'alter table table2 add column ' + name + ' '+ type_name(xtype ) + etc, etc
FROM syscolumns
WHERE ID = Object_ID('Table1') Name Not IN (SELECT Name from sysColumns where ID = Object_ID('Table2'))
0 голосов
/ 06 января 2011
  1. Здесь - это инструмент, который это делает.

Это запрос, который перечислит столбцы для таблицы:

SELECT *
FROM syscolumns
WHERE Id IN (SELECT ID from sysobjects WHERE name = 'TABLENAME')

Запустите запрос для обеих таблиц, отфильтруйте UNION, и вы по крайней мере получите список для перфорации.

0 голосов
/ 06 января 2011

Да, есть инструмент tablediff.exe текст ссылки или Microsoft Technet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...