Страница 1 из 1

Обновление БД

Добавлено: 13 дек 2005, 21:28
RomanS
Добрый вечер!

Появился такой вопросик. Есть БД на FB. Есть установщик серверной части, который пока только устанавливает FB если требуется и саму базу в указанный каталог. Очередная версия программы может иметь уже новую структуру БД, а у пользователя накопятся данные в установленной базе. Задача. Как произвести обновление базы у клиента. Ориентироваться на известный номер версии клиента не желательно, поскольку у клиента могут быть разные версии и обновлять придется БД с разными прошлыми версиями.

Пока вижу такой выход. Имея новую структуру и БД клиента сгенерировать скрипт, который внесет изменения в БД клиента. При этом данные клиента должны сохраниться, но добавятся например новые поля и таблицы. В таком случае КАК СГЕНЕРИРОВАТЬ СКРИПТ ДЛЯ ИЗМЕНЕНИЙ???

Можно также установить новую пустую БД, а в нее скопировать все что возможно из существующей. Но опять же ЧЕМ ПОЛЬЗОВАТЬСЯ???

Вот у меня такие вопросы или более общий — кто как решает эту проблему?

Пользуюсь InnoSetup.

Заранее благодарен!

Добавлено: 14 дек 2005, 08:09
Dimitry Sibiryakov
У меня приложение обновления базы проверяет текущую версию базы (хранится в спецтаблице) и запускает один из скриптов обновления до текущей версии. Эти скрипты сотворены ручками. Важно только иметь все констрейны поименованными чтобы можно было их дропнуть не глядя.

Добавлено: 14 дек 2005, 10:08
kdv
посмотри как делает 1С и например phpbb2. в базе всегда хранится версия метаданных. есть некий тул (собственный), который проверяет версию, и соответственно применяет нужные изменения, чтобы довести ее до требуемой. получать разницу между метаданными для такого инструмента можно при помощи dbcomparer.

Добавлено: 14 дек 2005, 12:05
RomanS
Видимо без версий нельзя. Добавил у себя таблицу и написал прогу, которая обновляет базу до последней версии. Вся история версий храниться в одном файле скрипта. Прога находит текущую и выполняет все последующее.