Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

IBExpert + Starteam = контроль версий базы данных

22K
17 ноября 2006 года
Inimeg
1 / / 17.11.2006
Здравствуйте.

Есть две базы данных. Одна из них, назовем её B, возникла от базы A.
Тоесть в один прекрасный момент наш продукт развился до новой версии и соответственно потребовалось поддерживать уже две базы данных. Для поддержки версионности продукта был использован StarTeam. Он с этой задачей справляется. А вот изменения в базы данных приходиться вносить в обе паралельно. Это не всегда удобно, потому что базы начинают постепенно разползаться на уровне хранимых процедур и полей таблиц.
Нужно организовать механизм контроля версионности баз. Покапавшись в IBExpert я нашел возможность выгружать в формате VCS метаданные базы. Насамом деле IBexpert при выгрузке создает для каждого обьекта базы отдельный скрипт c определенным расширением (tlb,sp,trg и т.д.) в зависимости от типа обьекта. Эти файлы от обеих баз я загружаю в Starteam и уже его средствами поддерживаю их версионность. Обьединяю измененные скрипты, добавляю в базу B необходимые скрипты которые были созданы в базе А и т.п. Все замечательно, но возникает вопрос. Как мне потом обратно из всех этих файлов -скриптов (их порядка 800 штук) внести изменения в реальную базу?
В IBExpert Extract Metadata есть , а вот Upload или там какой нибудь Import metadata отсутствует. Понятно что эти скрипты можно загрузить в ScriptEditor и оттуда выполнить, но их 800 штук!!! И каждый раз открывать такое количество файлов по одному нереально. К тому же есть проблема иного уровня. Скрипт в файле выглядит примерно так:

CREATE TABLE ACTION_STATUS (
ID_AS ID NOT NULL,
NAME STRING200,
DESCRIPTION BLOB_INFO,
DATE_RECORD NOW
);
ALTER TABLE ACTION_STATUS ADD CONSTRAINT PK_ACTION_STATUS PRIMARY KEY (ID_AS);

А таблица в базе до изменений выглядела так:
CREATE TABLE ACTION_STATUS (
ID_AS ID NOT NULL,
NAME STRING200,
DATE_RECORD NOW
);
ALTER TABLE ACTION_STATUS ADD CONSTRAINT PK_ACTION_STATUS PRIMARY KEY (ID_AS);

Тоесть в базе А в таблице ACTION_STATUS был столбец DESCRIPTION а в таблице B его небыло, но после обьедения версий в Starteam в скрипте для таблицы В появилась информация об этом столбце.
При попытке выполнить этот скрипт в базе B мы естественно получим ошибку ибо такая таблица уже есть. Так что нужен инструмент который сможет сравнить скрипт таблицы ACTION_STATUS в базе B с файлом-скриптом и выдать на выход строку типа
ALTER TABLE ACTION_STATUS.....
Во собственно и вопрос. Надеюсь доступно описал проблему.
Заранее благодарен за дельные советы.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог