Статус партнерства с 1С-Битрикс: Бизнес партнер
  • Маркетплейс
  • Софт
  • Документация
  • Блог
  • Новости
  • Профиль
  • FBUpdate

    Консольная утилита обновления баз данных предназначенная для разработчиков и администраторов баз данных под управлением Firebird/Interbase.

    • Версия 1.8 от 27.04.2012
    Windows
    fbupdate1_8.zip92.63 КБЗагрузить

    Описание

    Утилита позволяет автоматизировать обновление базы данных до необходимой версии на основании информации о версии базы хранящейся в ней. При этом возможно обновление нескольких баз одной командой. Базы могут иметь различную исходную версию.

    Установка и конфигурация

    Утилита не требует инсталяции. Все настройки хранятся в стандаотном INI-файле (Пример файла ниже). В следствии чего возможен одновременный запуск нескольких копий утилиты с различными настройками на одном компьютере. Кроме того возможен запуск утилиты с параметрами командной строки.

    Скрипты

    Для обновления используются стандартные SQL-скрипты (Пример SQL-скрипта ниже). Строки подключения к базе данных игнорируются. В скриптах возможно применение переменных. Переменным должно предшествовать "$$". Скрипты могут содержать коментарии. Для автоматического обновления необходимо:

    • База данных должна иметь таблицу с одной записью - теущей версии базы данных в текстовом вормате X.X.X.X, где Х - любое число
    • Скрипты должны содержать строку вида: update DBVersion set Build = '2.281.16.0';

    Если в команде SELECT будет отсутствовать часть "into $$you_var" то вывод результата будет произведен в консоль

    Дополнительная информация

    Протокл работы утилиты сохраняется в файле. Утилита работает не через isql.exe, а использует непосредственное подключение к СУБД. Для базы Firebird необходимо доступность в путях nпоиска или в текущем каталоге утилиты библиотеки fbclient.dll (Входит в дистрибутив Firebird). Утилита обновления баз данных написана на зыке C++.

    Благодарности

    Выражаю благодарность Фролову Сергею автору первого варианта данной утилиты на Delphi.

    Буду рад вашим отзывам и предложениям.

    Пример SQL-скритпа

    select name from T1 where id=1 into $$Test;
    insert into T2 (id,name) values (2,'$$Test');
    commit;
    update DBVersion set Build = '2.281.16.0';
    commit;
    

    Пример файла конфигурации

    ;****************************************************************
    ;                
    ;              ФАЙЛ ОСНОВНЫХ НАСТРОЕК FBUPDATE
    ;                
    ;****************************************************************
    ; Все настройки утилиты доступны из командной строки. Пример:
    ; fbupdate -a"
    C:\
    Program Files\YourSoft\bin\yoursoft.exe" -sC:\FBUpdate\Data\ -uSYSDBA - pmasterkey
    ; Параметры не установленные в командной строке принимаются из файла настройки
    ;
    ; Существует также ключ -q для выполнения указанного скрипта без учета версий. Например
    ; fbupdate -q*.sql Выполнит все файлы из текущего каталога с расширением sql
    
    [main]
    ; Путь к папке со скриптами для обновления БД.
    ; Ключ коммандной строки -s
    SqlScript=C:\FBUpdate\Data\
    
    ; Имя пользователя и пароль для подключения к БД. По умолчанию
    ; "SYSDBA" и "masterkey" соответственно
    ; Ключ коммандной строки -u
    UserName=SYSDBA
    ; Ключ коммандной строки -p
    Password=masterkey
    
    ; Таблица содержащая информацию о версии БД. По умолчанию "DBVERSION"
    ; Ключ коммандной строки -v
    VersionInfoTable=DBVERSION
    
    ; Поле содержащее информацию о версии БД. 
    По умолчанию 
    "BUILD"
    ; Ключ коммандной строки -f
    VersionInfoField=BUILD
    
    ; Условие к запросу для получения информации о версии БД. По умолчанию ""
    ; Ключ коммандной строки -w
    VersionInfoWhere=upper(name) like 'ВЕРСИЯ БАЗЫ ДАННЫХ'
    
    ; "Глубина" версии исполняемого файла приложения ограничивающая версию
    ;обновления базы. По умолчанию 2.  Т.е.,  например:  если  у  нас этот
    ;параметр равен 2; новая версия приложения 1.32.0.0, текущая версия БД
    ;будут выполняться скрипты версий до 1.32.Х.Х, где Х - любое.
    ; Ключ коммандной строки -d
    VersionDepth=2
    
    ; Обработка ошибок:
    ;	0 - пропустить обработку текущей базы при ошибке (по умолчанию)
    ;	1 - остановить обработку всех баз при ошибке
    ;	2 - задать вопрос при ошибке
    ;	3 - продолжать выполнение 
    ; Ключ коммандной строки -e
    ErrorProcessing=2
    
    ; Если задано и заданы имена пользователей в разделе [users]. То будет производится
    ; копирование прав имеющихся у пользователя, от имени которого производится
    ; обновление, после выполнения всех скриптов для каждой базы.
    ; Параметр задает какие права надо копировать (Порядок следования не важен):
    ;	I - insert (вставлять строки в таблицы или представления)
    ;	S - select (выбирать строки из таблиц или представлений)
    ;	D - delete (удалять строки из таблиц или представлений)
    ;       U - update (обновлять строки в таблицах или представлениях)
    ; 	R - reference (Зависимоть указанных столбцов с внешним ключом; как минимум,
    ;            это нужно предоставить всем столбцам первичного ключа)
    ;       X - execute (выполнение хранимых процедур)
    ;	G - grantes (установка прав)
    ; По умолчанию не задан, т.е. копирование прав не производится
    CopyGrantes=ISDURX
    
    ; Следующий параметр заставляет скрывать весь вывод утилиты.
    ;Может принимать следующие значения:
    ;	0 - скрывать
    ;	1 - отображать (по умолчанию)
    ; Ключ коммандной строки -h приведет к скрытию вывода
    ShowInfoOnScreen=1
    
    [bases]
    ; Если указан параметр -b с указанием БД, то данный список не обрабатывается
    
    db1=c:\data\bd1.gdb
    db2=c:\data\bd2.fdb
    db23=c:\data\bd3.gdb
    
    [users]
    ; Если заданы и задан параметр CopyGrantes то будет производится копирование прав
    ; имеющихся у пользователя, 
    от имени которго производится обновление, после выполнения всех скриптов для каждой базы.
    us1=REPL
    us2=TEST
    

    Изменения при переходе на 1.8

    • версия скриптов не сравнивается с версией исполняемого файла. Теперь выполняются все скрипты в указанной директории имеющие соответствующие признаки.
    • добавлен вывод результатов запроса на экран
    • добавлен параметр для скрытия вывода информации на экран

    Все программы

    © 2001-2017 Воробьев Александр