Форум: "Базы";
Текущий архив: 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.042 c