Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Сравнение структур 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
14-1110259486
begin...end
2005-03-08 08:24
2005.03.27
С Днём рождения! 8 марта


1-1110493444
WST
2005-03-11 01:24
2005.03.27
И снова CheckBox


14-1109957542
G100M
2005-03-04 20:32
2005.03.27
Pantech g500 IMEI


1-1111075991
pisatell
2005-03-17 19:13
2005.03.27
IdRSH


14-1109840007
Marser
2005-03-03 11:53
2005.03.27
Хочу извиниться





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский