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

Откуда: Челябинск
Сообщений: 1853
Жили были 2 одинаковых по структуре БД.
Затем первую много раз модифицировали, а про вторую забыли.
Нужно изменить стпуктуру 2-й, чтобы стала как 1я.

Мой вопрос о процедуре, как источнике данных для курсора - деталь этого более крупного.
19 фев 05, 15:26    [1333186]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
PVP
Member

Откуда: Украина, г.Сумы
Сообщений: 832
Сделать процедуру для автоматической синхронизации - это может быть накладно. Есть полуавтомат: отображает все различия, а изменения делаются руками. Утилита CoolBase

На будущее. При модификации структуры базы данных в Enterprise manager, работая в диаграммах, можно сохранить скрипты модификации структуры. Если их прогнать в той же последовательности в другой базе, то базы станут синхронными.
19 фев 05, 15:35    [1333195]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1853
Отображение различий я написал за час через syscolumns, sysobjects....
А второе - сохранение скриптов я попробую, ещё раз большое спасибо. Я об этом не знал.
19 фев 05, 15:49    [1333203]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Вообще-то поиск очень много дает по такому запросу.
Вот только личные усилия решить подобную проблему:

https://www.sql.ru/forum/actualthread.aspx?tid=77841&hl=dbimagehttps://www.sql.ru/forum/actualthread.aspx?tid=157662&hl=dbimage
https://www.sql.ru/forum/actualthread.aspx?tid=153382&hl=dbimage

P.S.На T-SQL решать такие задачи прикольно, но непрактично.
21 фев 05, 11:37    [1334608]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Более-менее полный список всего, что упоминалось на нашем форуме:

"SQL Compare" http://www.red-gate.com/SQL_Compare.htm
"AdeptSQL Diff" http://www.adeptsql.com/index.htm
"Embarcadero Change Manager" http://www.embarcadero.com/products/changemanager/index.html
"SQL Sync ToolKit" http://www.bizkit.ru/index.php?option=com_content&task=blogsection&id=4&Itemid=51&lang=
"CDB Database Comparator" http://www.dbbalance.com/index.htm
"SQLExecMS" http://www.laplas-soft.com/exec-intro.htm
"DatabaseDiff" http://www.softirbis.kiev.ua/databasediff.php?m=1&n=2
"XDBS" ftp://ftp.lime-systems.com/pub/Utils/XDBS/

Если кто-то забыт и обижен - давайте дополним список.
21 фев 05, 11:44    [1334647]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1853
to Crimean & GreenSunRise
Большое спасибо за ссылки. Пошёл читать.

Crimean, а почему непрактично, если я явно буду вынужден неоднократно выполнять эту операцию?
У меня есть клиенты, купившие "квартплату".
Поток требуемых ими модификаций не иссякает уже годы - меняются нормативы, законы. Обращаются они ко мне асинхронно. Единственный выход - делать Patch и раздавать. Синхронизация структур - неизбежный элемент.

В чём непрактичность? Может меня не туда заносит?
21 фев 05, 11:54    [1334706]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Я подозреваю, что как минимум половина пыталась решить проблему приведения структур средствами самого SQL. Если уже сам билли делает это через DTS... А сторонние фирмы пишут и пишут утиль...
В общем у меня аналогичные проблемы. В итоге мы пришли к распространению "образа" своей базы данных, состоящего из описания структуры, объектов и "технических" инициализационных скриптов, которые выполняются за несколько фаз. А обрабатывается это все своим инсталером. MSI тоже не прокатил при всей его навороченности.
21 фев 05, 12:21    [1334835]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Crimean имел в виду непрактичность решения данной задачи средствами именно T-SQL, а не непрактичность задачи как таковой. Задача-то как раз очень актуальна.

Возможно, ее лучше решать с использованием SQL-DMO, DTS, своих способов формирования "образов" баз, их сравнения и накатывания "дифференциальных" скриптов.
21 фев 05, 12:35    [1334905]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Vetal
Member

Откуда: Киев
Сообщений: 1019
GreenSunrise
Более-менее полный список всего, что упоминалось на нашем форуме:

"SQL Compare" http://www.red-gate.com/SQL_Compare.htm
"AdeptSQL Diff" http://www.adeptsql.com/index.htm
"Embarcadero Change Manager" http://www.embarcadero.com/products/changemanager/index.html
"SQL Sync ToolKit" http://www.bizkit.ru/index.php?option=com_content&task=blogsection&id=4&Itemid=51&lang=
"CDB Database Comparator" http://www.dbbalance.com/index.htm
"SQLExecMS" http://www.laplas-soft.com/exec-intro.htm
"DatabaseDiff" http://www.softirbis.kiev.ua/databasediff.php?m=1&n=2
"XDBS" ftp://ftp.lime-systems.com/pub/Utils/XDBS/

Если кто-то забыт и обижен - давайте дополним список.

О!!! А мне как раз нужон инструмент для сравнения двух баз данных. Нужно именно сравнение метаданных (структур таблиц, хранимых процедур, триггеров).
Я так понял, народ работал с вышеперечисленными утилитками? Какую из них можете посоветовать по своему опыту? Заранее спасибо!!
21 фев 05, 13:02    [1335035]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Все утилиты хороши. Но каждая особо хороша для "своих" случаев. В противном случае их бы не было так много.
21 фев 05, 13:14    [1335090]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Vetal
Member

Откуда: Киев
Сообщений: 1019
Crimean
Все утилиты хороши. Но каждая особо хороша для "своих" случаев. В противном случае их бы не было так много.

"Мой" случай - сравнить текст хранимых процедур в двух базах. Какую утилиту можете для этого посоветовать? Хотелось бы при этом не гемороиться с оплатой этой утилиты. Мож есть бесплатные или с xUSSR-лицензией?
21 фев 05, 13:30    [1335147]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Если только тексты хранимок сравнить, так напишите сами - просто и бесплатно. Всего-то несколько строчек кода получится. sysobjects и syscomments - достаточно.
21 фев 05, 14:23    [1335425]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
2 GreenSunrise

Дааа? :) Тада демонстрирую.

create procedure dbo.p1
as
select 1
return 1
go

exec sp_helptext p1
go

-- 1
-- 2
-- 3
alter procedure dbo.p1
as
select 1
return 1
go

exec sp_helptext p1
go

drop procedure p1
go

Процедура не поменялась. А вот то, что надо будет сравнивать - поменялось. Моя утиль, к примеру, это ловит :) Ну и не только это.
21 фев 05, 14:43    [1335524]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Crimean
2 GreenSunrise

Дааа? :) Тада демонстрирую.


Не уверен, что изменение комментария перед процедурой не есть изменение самой процедуры. Там легко может содержаться комментарий к самой процедуре ...
21 фев 05, 14:50    [1335563]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
2 Гавриленко Сергей Алексеевич

Я сказал, что это только один из примеров. Хотя приведенный пример, несомненно, бага мс, но он как нельзя хорошо подчеркивает необходимость парсинга исходников. Хотя дальше мы вообще в идеологию скатимся. Лично я сторонник фазы "компиляции" базы данных. И только потом "скомпилированное" отдавать клиенту.
21 фев 05, 15:07    [1335670]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
2 Crimean

Дааа? :) Тада демонстрирую.

create procedure dbo.p1
as
select 1
return 1
go

select text from syscomments where id = object_id('p1')
go

-- 1
-- 2
-- 3
alter procedure dbo.p1
as
select 1
return 1
go

select text from syscomments where id = object_id('p1')
go

drop procedure p1
go

Где вы в моем посте видели упоминание sp_helptext? Не было такого. Было про sysobjects и syscomments. А их, как видите, вполне достаточно для вашего примера.
21 фев 05, 15:19    [1335741]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Кстати, у меня и с sp_helptext нормально работает... Выдает с комментариями.
21 фев 05, 15:28    [1335770]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Так в том-то и вопрос, что объект не изменился. А содержимое syscomments - изменилось.
Не совсем к месту, но близко - если попробовать найти в syscomments выражение для своего check constraint, то оно будет "непохоже", хотя и так же функционально.
21 фев 05, 15:32    [1335787]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Хм. Честно говоря, для меня понятие комментария неразрывно связано с объектом, к которому оно относится. Вы же не будете предлагать выкусывать комментарии из тела процедуры и сравнивать "изменилось-не изменилось" по этим "отфильтрованным" текстам? Тогда какая разница, где находятся комментарии - до процедуры или внутри нее?

Или для вас изменение комментариев в любом месте кода - не есть изменение объекта? Тогда это вопрос терминологии, в котором мы расходимся.
21 фев 05, 15:40    [1335836]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация структуры баз данных  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Вопрос с моей стороны закрыт за отсутствием предмета обсуждения.
21 фев 05, 17:25    [1336304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить