Главная страница
    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
1-1110964851
PVOzerski
2005-03-16 12:20
2005.03.27
Как бы управлять порядком уничтожения компонентов?


1-1110874865
Гость
2005-03-15 11:21
2005.03.27
Как сделать, чтоб нельзя было "уйти" из формы без ее закрытия?


9-1104670923
Micker2
2005-01-02 16:02
2005.03.27
DelphiX.2d аркада.Спроверка столкновения


1-1110874872
Petukhov
2005-03-15 11:21
2005.03.27
Internal error L594


9-1104597582
макс
2005-01-01 19:39
2005.03.27
Вопрос по 3dmax-у.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский