Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Сравнение структур 2-х баз данных   Найти похожие ветки 

 
salexn   (2005-02-24 13:29) [0]

Есть 2 базы данных в MSSQL. Нужно их сравнить ПО СТРУКТУРЕ и сделать скрипт для того, чтобы "выровнять" их. Может кто подскажет как или утилиту посоветует?


 
KSergey ©   (2005-02-24 13:32) [1]

MS SQL Sync Toolkit


 
Johnmen ©   (2005-02-24 13:34) [2]

Забавно...
Вот если в одной есть индекс на поля F1 и F2 в к.-л. таблице, а во второй - на F2 и F3, то как предполагается "выравнивать" ?
:)))


 
salexn   (2005-02-24 13:41) [3]

>Johnmen
базы ОДИНАКОВЫЕ по своей сути, так сказать от одной и той же программы. Но с течением времени БД изменялась. Необходимо догнать БД до той, которая теперь. Вот и все.


 
Johnmen ©   (2005-02-24 13:46) [4]

>salexn  

Убить отстающего. А вместо него создать нового...:)


 
salexn   (2005-02-24 13:49) [5]

вместе с данными :-) круто!
>KSergey
Я конечно дико извеняюсь, но может у вас есть в наличие. Что-то не одна ссылка не работает. Если есть, то киньте на мыло
salexn@tut.by


 
Johnmen ©   (2005-02-24 14:09) [6]

>salexn   (24.02.05 13:49) [5]
>вместе с данными :-) круто!

А где в вопросе ты говорил про данные ? Что-то я не вижу... А ты ?

Создать нового, перелить данные, убить отстающего...:)


 
Ольга   (2005-02-24 17:59) [7]

"Выравнить" базы по наличию таблиц, полей, процедур, функций - это не проблема. Нужно проанализировать системные таблицы:

Например:
@BaseETO - имя базы эталона
@BaseTEST - имя тестируемой базы

select * from "+ @BaseTEST+"..sysobjects obj1
where not exists( select * from "+@BaseETO+"..sysobjects obj2
where obj2.name=obj1.name) order by name

select obj1.name, col1.* from "+@BaseTEST+"..syscolumns col1
inner join "+@BaseTEST+"..sysobjects obj1 on col1.id=obj1.id where not exists(select * from "+@BaseETO+"..syscolumns col2
inner join "+@BaseETO+"..sysobjects obj2 on col2.id=obj2.id  
where obj2.name=obj1.name and col1.name=col2.name) order by obj1.name

А вот с внешними ключами и индексами - дело утомительное и неблагодарное.


 
salexn   (2005-02-25 10:28) [8]

>Ольга
Не проблема, если база не большая. а если 300 таблиц, как у меня. Ручками надоест однако :-)


 
salexn   (2005-02-25 10:31) [9]

>Ольга
Не проблема, если база не большая. а если 300 таблиц, как у меня. Ручками надоест однако :-)


 
Desdechado ©   (2005-02-25 10:49) [10]

выгрузи метаданные в скрипт из каждой БД, найди разницу с помощью команды FC, из нее сотвори скрипт для "выравнивания"


 
Danilka ©   (2005-02-25 10:58) [11]

А работать-то будет? :)
Допустим, была какая-то таблица, в которую добавили поля, также эти поля проапдейтили откуда-то, для обеспечения нормальной работы.
Или, например, таблицу разделили на две, провели нормализацию, вообще убойный случай. Простым сравнением ты определишь, что появилось две новых таблицы и одна удалилась, что ты сделаешь, грохнешь ту одну со всеми данными и добавишь еще две пустые?

Надо было изначально, любые изменения в структуре базы организовывать скриптами, и сохранять эти скрипты, с комментариями: кто, когда поменял и зачем. Тогда и проблем-бы не было - собрать для любой старой скрипт на ее изменение до новой.


 
Ольга   (2005-02-25 13:39) [12]

[8]
Мне и в голову не приходило, чтобы это делать ручками. Естественно программно. С помощью этих запросов получаешь список отличий и диномически создаешь скрипты для обновления.
Правда, перед выполнением скрипта я все же прошу пользователя подтвердить намерение. Даже если таблиц 300 (не в каждой же были изменения) - это не утомительно.
[11]
Да, для убойных случаев это не подходит. Но в основном бывают случаи рядовые.

> Надо было изначально, любые изменения в структуре базы организовывать
> скриптами

Это правильно. Но, как подсказывает практика, трудноосуществимо, самодисциплины не хватает что ли.


 
Danilka ©   (2005-02-25 16:38) [13]

[12] Ольга   (25.02.05 13:39)
> Но, как подсказывает практика, трудноосуществимо, самодисциплины
> не хватает что ли.

У нас в конторе вполне осуществимо, т.к. разработчиков куча, в рабочую базу никто ничего не прокатывает - все скрипты отдают внедренцам, они проверяют, решена-ли задача, нигде ничего не вылезло, и затем только в рабочей прокатывают. :)
А для себя, дома, сначала ленился, потом, как отгреб, такую-же практику завел - любые изменения в базе только скриптами. :)


 
Ольга   (2005-02-25 17:08) [14]

А у нас наоборот: разработчиков мало, куча баз...
Но это, конечно, никак нас не оправдывает.
Надо, надо все скриптовать. А то сначала создаешь себе проблемы, а потом мужественно их преодолеваешь.


 
aus   (2005-02-26 14:46) [15]

Ольга   (25.02.05 17:08) [14]
а потом мужественно их преодолеваешь.


А почему не женственно? )))



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1110976205
Sanich
2005-03-16 15:30
2005.03.27
Как экспортировать отчет из QuickReport.


14-1109882797
peppo
2005-03-03 23:46
2005.03.27
Программно отличить виртуальный CD от реального


3-1109325288
Mortal
2005-02-25 12:54
2005.03.27
Про тип Data в WinXP и Win98


1-1110363090
Poha
2005-03-09 13:11
2005.03.27
QReport


14-1109967868
каспер
2005-03-04 23:24
2005.03.27
Распечатка с "подсветкой синтаксиса"