![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сравнение структур 2-х баз данных
salexn © (2005-02-24 13:29:00)Есть 2 базы данных в MSSQL. Нужно их сравнить ПО СТРУКТУРЕ и сделать скрипт для того, чтобы "выровнять" их. Может кто подскажет как или утилиту посоветует?
aus (2005-02-26 14:46:00) [1]Ольга (25.02.05 17:08) [14]
а потом мужественно их преодолеваешь.
А почему не женственно? )))
Ольга (2005-02-25 17:08:00) [2]А у нас наоборот: разработчиков мало, куча баз...
Но это, конечно, никак нас не оправдывает.
Надо, надо все скриптовать. А то сначала создаешь себе проблемы, а потом мужественно их преодолеваешь.
Danilka (2005-02-25 16:38:00) [3][12] Ольга (25.02.05 13:39)
> Но, как подсказывает практика, трудноосуществимо, самодисциплины
> не хватает что ли.
У нас в конторе вполне осуществимо, т.к. разработчиков куча, в рабочую базу никто ничего не прокатывает - все скрипты отдают внедренцам, они проверяют, решена-ли задача, нигде ничего не вылезло, и затем только в рабочей прокатывают. :)
А для себя, дома, сначала ленился, потом, как отгреб, такую-же практику завел - любые изменения в базе только скриптами. :)
Ольга (2005-02-25 13:39:00) [4][8]
Мне и в голову не приходило, чтобы это делать ручками. Естественно программно. С помощью этих запросов получаешь список отличий и диномически создаешь скрипты для обновления.
Правда, перед выполнением скрипта я все же прошу пользователя подтвердить намерение. Даже если таблиц 300 (не в каждой же были изменения) - это не утомительно.
[11]
Да, для убойных случаев это не подходит. Но в основном бывают случаи рядовые.
> Надо было изначально, любые изменения в структуре базы организовывать
> скриптами
Это правильно. Но, как подсказывает практика, трудноосуществимо, самодисциплины не хватает что ли.
Danilka (2005-02-25 10:58:00) [5]А работать-то будет? :)
Допустим, была какая-то таблица, в которую добавили поля, также эти поля проапдейтили откуда-то, для обеспечения нормальной работы.
Или, например, таблицу разделили на две, провели нормализацию, вообще убойный случай. Простым сравнением ты определишь, что появилось две новых таблицы и одна удалилась, что ты сделаешь, грохнешь ту одну со всеми данными и добавишь еще две пустые?
Надо было изначально, любые изменения в структуре базы организовывать скриптами, и сохранять эти скрипты, с комментариями: кто, когда поменял и зачем. Тогда и проблем-бы не было - собрать для любой старой скрипт на ее изменение до новой.
Desdechado (2005-02-25 10:49:00) [6]выгрузи метаданные в скрипт из каждой БД, найди разницу с помощью команды FC, из нее сотвори скрипт для "выравнивания"
salexn (2005-02-25 10:31:00) [7]>Ольга
Не проблема, если база не большая. а если 300 таблиц, как у меня. Ручками надоест однако :-)
salexn (2005-02-25 10:28:00) [8]>Ольга
Не проблема, если база не большая. а если 300 таблиц, как у меня. Ручками надоест однако :-)
Ольга (2005-02-24 17:59:00) [9]"Выравнить" базы по наличию таблиц, полей, процедур, функций - это не проблема. Нужно проанализировать системные таблицы:
Например:
@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
А вот с внешними ключами и индексами - дело утомительное и неблагодарное.
Johnmen (2005-02-24 14:09:00) [10]>salexn (24.02.05 13:49) [5]
>вместе с данными :-) круто!
А где в вопросе ты говорил про данные ? Что-то я не вижу... А ты ?
Создать нового, перелить данные, убить отстающего...:)
salexn (2005-02-24 13:49:00) [11]вместе с данными :-) круто!
>KSergey
Я конечно дико извеняюсь, но может у вас есть в наличие. Что-то не одна ссылка не работает. Если есть, то киньте на мыло
salexn@tut.by
Johnmen (2005-02-24 13:46:00) [12]>salexn
Убить отстающего. А вместо него создать нового...:)
salexn (2005-02-24 13:41:00) [13]>Johnmen
базы ОДИНАКОВЫЕ по своей сути, так сказать от одной и той же программы. Но с течением времени БД изменялась. Необходимо догнать БД до той, которая теперь. Вот и все.
Johnmen (2005-02-24 13:34:00) [14]Забавно...
Вот если в одной есть индекс на поля F1 и F2 в к.-л. таблице, а во второй - на F2 и F3, то как предполагается "выравнивать" ?
:)))
KSergey (2005-02-24 13:32:00) [15]MS SQL Sync Toolkit