Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнить структуру таблиц  [new]
mqn
Member

Откуда: Краснодар
Сообщений: 76
Приветствую всех, подскажите как можно в MS SQL 2008 сравнить структуру 2 таблиц, т.е. на различие полей, индексов и т.д.
1) Вариант, когда таблицы в 1 базе
2) Вариант, когда таблицы находятся в разных базах
10 апр 14, 09:58    [15859852]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
хмхмхм
Guest
mqn
Приветствую всех, подскажите как можно в MS SQL 2008 сравнить структуру 2 таблиц, т.е. на различие полей, индексов и т.д.
1) Вариант, когда таблицы в 1 базе
2) Вариант, когда таблицы находятся в разных базах


Самый простой вариант без скачивания-установки программ:

берешь SMSS далее на каждой из таблиц кликаешь правой кнопкой мыши -> Create To -> New Query ...

Далее визуально просматриваешь. В этом случае SSMS создаст все, кроме триггеров и индексов, их придется просматривать отдельно.

Вариант 2.
Устанавливаешь Visual Studio, в ней создаешь проект бд. Заливаешь туда проект бд (свою таблицу), затем с помощью SQL->Schema Compare сравниваешь структуру таблиц.

Вариант 3.
Утилиты. Например Red Gate SQL Compare
10 апр 14, 10:10    [15859915]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
хмхмхм
mqn
Приветствую всех, подскажите как можно в MS SQL 2008 сравнить структуру 2 таблиц, т.е. на различие полей, индексов и т.д.
1) Вариант, когда таблицы в 1 базе
2) Вариант, когда таблицы находятся в разных базах


Самый простой вариант без скачивания-установки программ:

берешь SMSS далее на каждой из таблиц кликаешь правой кнопкой мыши -> Create To -> New Query ...

Далее визуально просматриваешь. В этом случае SSMS создаст все, кроме триггеров и индексов, их придется просматривать отдельно.

Вариант 2.
Устанавливаешь Visual Studio, в ней создаешь проект бд. Заливаешь туда проект бд (свою таблицу), затем с помощью SQL->Schema Compare сравниваешь структуру таблиц.

Вариант 3.
Утилиты. Например Red Gate SQL Compare
В SSMS правой кнопкой мыши по базе, Задачи -> Сформировать скрипты...

Там галочками выбираем объекты (таблицы), задаём параметры (например, создавать индексы, триггеры).

Как-то так. И до SSMS 2012 это было. Может, названия пунктов меню по-другому выглядят.
10 апр 14, 10:23    [15860002]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6175
iap
В SSMS правой кнопкой мыши по базе, Задачи -> Сформировать скрипты...
Там галочками выбираем объекты (таблицы), задаём параметры (например, создавать индексы, триггеры).

Или скриптинг через SMO - там список опций скриптования еще обширней.

хмхмхм
Далее визуально просматриваешь.

Да вот еще. Для сравнения данных давно уже diff tool'ы придумали.
10 апр 14, 11:38    [15860511]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
Сон Веры Павловны
iap
В SSMS правой кнопкой мыши по базе, Задачи -> Сформировать скрипты...
Там галочками выбираем объекты (таблицы), задаём параметры (например, создавать индексы, триггеры).

Или скриптинг через SMO - там список опций скриптования еще обширней.

хмхмхм
Далее визуально просматриваешь.

Да вот еще. Для сравнения данных давно уже diff tool'ы придумали.
А если порядок полей разный?
10 апр 14, 11:45    [15860575]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6175
iap
А если порядок полей разный?

Сравнить запросом к information_schema.columns или sys.columns.
10 апр 14, 11:49    [15860615]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
igor_ku
Member

Откуда:
Сообщений: 129
Как вариант можно написать запрос к системным вьюхам типа sys.tables, sys.columns, sys.indexes, etc. и сравнить результаты с разных баз. Для получения разницы структур, полученных такими запросами, можно запользовать EXCEPT\INTERSECT.
10 апр 14, 11:50    [15860628]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
хмхмхм
Guest
Сон Веры Павловны

хмхмхм
Далее визуально просматриваешь.

Да вот еще. Для сравнения данных давно уже diff tool'ы придумали.

Это конечно хорошо, но при изменении порядка следования записей большинство известных мне diff tool распознают это как изменение, хотя изменений-то как раз и не было.
10 апр 14, 11:54    [15860671]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
mqn
Member

Откуда: Краснодар
Сообщений: 76
Спасибо большое за ответы, воспользовался Red Gate SQL Compare, вообщем этого с головой хватит, только объем инфы выводит уж очень обширный.

Я изначально думал, можно стандартными средствами все это сделать, как-нибудь с помощью запросов. Я не силен пока в MSSQl =)
10 апр 14, 12:05    [15860789]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
diff tool
Guest
хмхмхм
Сон Веры Павловны

пропущено...

Да вот еще. Для сравнения данных давно уже diff tool'ы придумали.

Это конечно хорошо, но при изменении порядка следования записей большинство известных мне diff tool распознают это как изменение, хотя изменений-то как раз и не было.

это про порядок полей?
вообще-то разный порядок полей - это различие между таблицами.
10 апр 14, 12:05    [15860790]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить структуру таблиц  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
хмхмхм
при изменении порядка следования записей большинство известных мне diff tool распознают это как изменение
Ну не скажи, зависит от настроек, почти у всех эта опция есть.
Даже в стандартной бесплатной тулзе от MS (SQL Server Data Tools) есть.
10 апр 14, 17:53    [15863994]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить