Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1087
Делюсь наработками.
Может кто еще ездит в том же танке, что и я - пользуйтесь.

Для чего это надо было мне - да просто из-за лени и недостатка времени.
Готовимся использовать "в бою" возможности 2.5 и потому уже совсем назрел переход.
Более 100 автовокзалов по территории 25 регионов России - физически сам не смогу присутствовать на всех объектах.
Поэтому стремился максимально облегчить ручные операции админам систем на местах.

Речь о замене Firebird 1.5 на 2.5 и переводе базы данных на ODS 11.2

Начальные условия:
1) Firebird 1.5 работает в единственном числе
2) База данных одна. Размер страницы 16K.
3) Данные в ней в кодировке WIN1251
4) Имя инсталлятора Firebird 2.5 (в данный момент это версия FB 2.5.1) прописано в скрипте жестко, и оно для Win32. У вас 64-битная винда? Замените имя инсталлятора в тексте.

Т.е. задача - заменить версию SQL-сервера и сделать бэкап-рестор базы данных для изменения ODS.

Родился в результате вот такой скрипт.

Кратко алгоритм его работы:
- запрос путей и паролей
- проверка текущего каталога и указанных путей на предмет наличия в них необходимых файлов (инсталлятор, деинсталлятор, наличие уже установленного Firebird 2.5 и пр.)
- проверка открытых сетевых соединений на порт 3050
- удаление Firebird 1.5 штатным деинсталлятором
- установка Firebird 2.5 инсталлятором
- запуск службы
- перенос базы пользователей security.fdb
- бэкап базы пользователей security.fdb
- восстановление базы пользователей security2.fdb в формате ODS 11.2
- резервное копирование базы данных
- восстановление базы данных в формате ODS 11.2 с применением -FIX_FSS_METADATA
- замена базы данных

Не стал делать предварительную проверку на восстановимость бэкапа прежде замены сервера.
Сознательно не стал. Объекты многие в режиме 24х7 работают, время регламентных работ стремился сократить. Возложил это предварительное действо на местных админов в рабочее время. И не стал добавлять вариант установки суперклассика - только суперсервер или классик. Подточить при желании скрипт - не проблема.

Скрипт положить вместе с инсталлятором Firebird 2.5 (имя инсталлятора смотрите по тексту) в каталог, где уже установлен Firebird 1.5 и запускать скрипт с админскими правами.

Скрипт поставляется "как есть". Претензии ни по какому поводу не принимаю. :)
Так что кто решит использовать, тестируйте "в песочнице" прежде запуска на своих реальных объектах.

Критика принимается.

+
@echo off

cls

echo ____________________________________________________
echo Укажите, пожалуйста, некоторые необходимые параметры:
echo ____________________________________________________

set /P FB15_PATH=1) Путь к каталогу Firebird 1.5 [%programfiles%\Firebird\Firebird_1_5]:
if "%FB15_PATH%"=="" (set FB15_PATH=%programfiles%\Firebird\Firebird_1_5)
set /P DB_PATH=2) Путь к каталогу с базой данных [d:\AWTSYS]:
if "%DB_PATH%"=="" (set DB_PATH=d:\AWTSYS)
set /P DB_FILE=3) Файл базы данных [myDBname.fdb]:
if "%DB_FILE%"=="" (set DB_FILE=myDBname.fdb)
set /P SYSDBA_PASSWORD=4) Пароль пользователя SYSDBA [masterkey]:
if "%SYSDBA_PASSWORD%"=="" (set SYSDBA_PASSWORD=masterkey)

cls

echo Проверяю соединения Firebird SQL.
echo Не допускается наличие ни серверных, ни клиентских соединений...
echo *
netstat -n | find ":3050 "
echo *
for /F "tokens=*" %%i in ('netstat -n ^| find ^":3050 ^" ^| find /C ^"EST^"') do set EST=%%i
if %EST%==0 (goto CONT)
goto err_NETSTAT

:CONT
echo Установленных соединений на порт 3050 не обнаружено.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul
echo *
echo *
echo *
echo ____________________________________________________
echo Проверяю наличие необходимых файлов и соблюдение условий...
echo ____________________________________________________
if not exist "%DB_PATH%\%DB_FILE%" (goto err_DB)
echo Файл базы данных %DB_PATH%\%DB_FILE% ... OK
if not exist "%FB15_PATH%\security.fdb" (goto err_security)
echo База SQL-пользователей %FB15_PATH%\security.fdb ... OK
if not exist "%FB15_PATH%\unins000.exe" (goto err1)
echo Деинсталлятор %FB15_PATH%\unins000.exe ... OK
if not exist "%FB15_PATH%\bin\gstat.exe" (goto err_gstat)
echo Программа %FB15_PATH%\bin\gstat.exe ... OK
echo _____________________________________________
echo Проверяю ODS базы данных %DB_PATH%\%DB_FILE%...
echo _____________________________________________
cd bin
gstat -h -user sysdba -password %SYSDBA_PASSWORD% localhost:%DB_PATH%\%DB_FILE%| find "10.1" > gstat.testODS.delme
for /F "tokens=*" %%i in ('find /C "10.1" ^< gstat.testODS.delme') do set ODS_OK=%%i
If %ODS_OK%==0 (goto err_ODS)
echo Версия ODS 10.1 - ОК
echo *
echo *
echo *
cd..
if not exist "%FB15_PATH%\Firebird-2.5.1.26351_1_Win32.exe" (goto err2)
echo Инсталлятор %FB15_PATH%\Firebird-2.5.1.26351_1_Win32.exe ... OK
if exist %programfiles%\Firebird\Firebird_2_5\security2.fdb (goto err_FB25exist)
echo Установка Firebird 2.5 ... не обнаружена
echo *
echo Все необходимые файлы присутствуют!
echo Необходимые условия для процесса замены версии серевера Firebird соблюдены!
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul

for /F "tokens=1 Delims=:" %%i in ("%FB15_PATH%") do set DRV=%%i
%DRV%:
cd %FB15_PATH%

cls

color 0C

echo **************** В Н И М А Н И Е !!! *************************************
echo Прежде, чем вы продолжите выполнение данного скрипта, рекомендуем
echo убедиться, что Вы сделали копию оригинальной базы данных
echo *
echo *** %DB_PATH%\%DB_FILE%
echo *
echo и файла базы SQL-пользователей
for /F "tokens=*" %%i in ('pwd') do set PWD=%%i
echo *
echo *** %PWD%\security.fdb
echo *
echo Также убедитесь в том, что у вас имеется инсталлятор Firebird 1.5
echo для восстановления в случае неудачи.
echo Скопировать этот инсталлятор можно по ссылке
echo *
echo *** http://sourceforge.net/projects/firebird/files/firebird-win32/1.5.6-Release/Firebird-1.5.6.5026-0-Win32.exe/download
echo *
echo *
echo Нажмите пробел для продолжения или CTRL+C для завершения выполнения
pause >nul

color 08

cls

echo Выберите вариант установки Firebird SQL
ECHO 1 - Superserver 
ECHO 2 - Classic server

CHOICE /C 12

IF errorlevel 2 goto CS
IF errorlevel 1 goto SS

:CS
set ServerType=ServerComponent\ClassicServerComponent
set ST=Classic
goto 1

:SS
set ServerType=ServerComponent\SuperServerComponent
set ST=Superserver

:1
cls

rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo ____________________________________________________
echo Вы указали следующие параметры:
echo ____________________________________________________
echo Путь к Firebird SQL 1.5: 	%FB15_PATH%\
echo Путь к каталогу с базой данных:	%DB_PATH%
echo Файл базы данных:		%DB_FILE%
echo Пароль пользователя SYSDBA:	%SYSDBA_PASSWORD%
echo Вариант установки Firebird 2.5: %ST%
echo ____________________________________________________
echo Все готово для начала процесса замены версии серевера Firebird!
echo ____________________________________________________
echo Нажмите пробел для продолжения или CTRL+C для завершения выполнения
pause >nul
echo *
echo *
echo *
echo _____________________________________________
echo Копирую базу SQL-пользователей security.fdb -- security.org
echo _____________________________________________
copy security.fdb security.org
echo *
echo *
echo *
echo _____________________________________________
echo Удаляю Firebird SQL 1.5...(1/9)
echo _____________________________________________
unins000.exe /verysilent
echo Удаление Firebird SQL 1.5 выполнено!
echo *
echo *
echo *
echo _____________________________________________
echo Устанавливаю Firebird SQL 2.5...(2/9)
echo _____________________________________________

Firebird-2.5.1.26351_1_Win32 /VERYSILENT /LOG /NORESTART /FORCE /TASKS="!UseGuardianTask,UseServiceTask,AutoStartTask,!MenuGroupTask,CopyFbClientAsGds32Task,CopyFbClientToSysTask" /COMPONENTS="%ServerType%,ServerComponent, DevAdminComponent,ClientComponent" /NOICONS
echo Установка завершена!
echo *
echo *
echo *
echo _____________________________________________
echo Запуск службы FirebirdServerDefaultInstance...
echo _____________________________________________
net start FirebirdServerDefaultInstance
echo *
echo *
echo *
echo _____________________________________________
echo Копирую базу пользователей...(3/9)
echo _____________________________________________
copy security.fdb "%programfiles%\Firebird\Firebird_2_5"
copy aliases.conf "%programfiles%\Firebird\Firebird_2_5"
cd "%programfiles%\Firebird\Firebird_2_5\bin"
echo *
echo *
echo *
echo _____________________________________________
echo Преобразование базы пользователей...(4/9)
echo _____________________________________________
if exist "%programfiles%\firebird\firebird_2_5\security.fbk" (del "%programfiles%\firebird\firebird_2_5\security.fbk")
if exist "%programfiles%\firebird\firebird_2_5\security.fdb2" (del "%programfiles%\firebird\firebird_2_5\security.fdb2")
echo Выполняю бэкап...
gbak -user sysdba -password masterkey -b -v localhost:"%programfiles%\firebird\firebird_2_5\security.fdb" "%programfiles%\firebird\firebird_2_5\security.fbk"
echo *
echo *
echo *
echo Завершен бэкап базы данных SQL-пользователей.
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul

echo Выполняю восстановление в формате ODS 11.2...
gbak -user sysdba -password masterkey -v -p 16384 -c "%programfiles%\firebird\firebird_2_5\security.fbk" localhost:"%programfiles%\Firebird\Firebird_2_5\security.fdb2"
echo *
echo *
echo *
echo Завершено восстановление базы данных SQL-пользователей.
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul

echo *
echo *
echo *
echo _____________________________________________
echo Модификация базы пользователей...(5/9)
echo _____________________________________________
isql -user sysdba -password masterkey localhost:"%programfiles%\Firebird\Firebird_2_5\security.fdb2" -i "%ProgramFiles%\Firebird\Firebird_2_5\misc\upgrade\security\security_database.sql"
echo Выполнено!
echo *
echo *
echo *
echo _____________________________________________
echo Подмена базы пользователей...(6/9)
echo _____________________________________________
cd..
rename security2.fdb security2.org
rename security.fdb2 security2.fdb
echo Выполнено!
cd bin
echo *
echo *
echo *
echo _____________________________________________
echo Резервное копирование базы данных...(7/9)
echo _____________________________________________
if exist "%DB_PATH%\%DB_FILE%.fbk" (del /q "%DB_PATH%\%DB_FILE%.fbk")
if exist "%DB_PATH%\%DB_FILE%.fb1" (del /q "%DB_PATH%\%DB_FILE%.fb1")
if exist "%DB_PATH%\%DB_FILE%.fb2" (del /q "%DB_PATH%\%DB_FILE%.fb2")
gbak -user sysdba -password %SYSDBA_PASSWORD% -b -v localhost:"%DB_PATH%\%DB_FILE%" "%DB_PATH%\%DB_FILE%.fbk"
echo *
echo *
echo *
echo _____________________________________________
echo Восстановление базы данных в формате ODS 11.2 ...(8/9)
echo _____________________________________________
gbak -user sysdba -password %SYSDBA_PASSWORD% -FIX_FSS_METADATA WIN1251 -p 16384 -c -v "%DB_PATH%\%DB_FILE%.fbk" localhost:"%DB_PATH%\%DB_FILE%.fb2"

echo *
echo *
echo *
echo _____________________________________________
echo Замена базы данных...(9/9)
echo _____________________________________________
rename "%DB_PATH%\%DB_FILE%" "%DB_FILE%.fb1"
rename "%DB_PATH%\%DB_FILE%.fb2" "%DB_FILE%"
echo Оригинальный файл базы данных сохранен под именем %DB_FILE%.fb1
echo *
echo *
echo *
echo _____________________________________________
echo Скрипт завершил работу!
echo _____________________________________________

goto ex

:err_NETSTAT
echo Найдены открытые соединения на порт 3050!
echo Завершите работу приложений, работающих с этим
echo или другими серверами Firebird
echo Работа скрипта будет завершена.
goto ex


:err_FB25exist
echo Найден каталог %programfiles%\Firebird\Firebird_2_5
echo Необходимо удалить существующую инсталляцию Firebird_2_5
echo и удалить этот каталог в том числе.
echo Работа скрипта будет завершена.
goto ex

:err_DB
echo Не могу найти оригинальную базу данных %DB_PATH%\%DB_FILE%
echo Возможно, вы опечатались при вводе имени файла.
echo Работа скрипта будет завершена.
goto ex

:err_security
echo Не могу найти базу данных SQL-пользователей
echo %FB15_PATH%\security.fdb
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново
goto ex

:err_gstat
echo Не могу найти утилиту %FB15_PATH%\bin\gstat
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново.
echo Либо вы неверно указали каталог существующей установки Firebird 1.5:
echo %FB15_PATH%

goto ex


:err_ODS
echo База данных %DB_PATH%\%DB_FILE%
echo не в формате Firebird 1.5!
echo Если была попытка неудачного обновления,
echo то восстановите базу данных из резервной копии
goto ex

:err1
echo Не найден файл удаления Firebird 1.5
echo %FB15_PATH%\unins000.exe
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново
goto ex

:err2
echo Ошибка установки Firebird 2.5
echo Не найден установочный файл Firebird-2.5.1.26351_1_Win32.exe
echo Скопируйте этот файл в каталог, в который в текущий момент
echo уже установлен Firebird 1.5
echo Либо вы неверно указали каталог существующей установки Firebird 1.5:
echo %FB15_PATH%
goto ex

:ex
echo _____________________________________________
echo Нажмите любую клавишу для завершения...
pause > nul


--
"И это пройдет"

Сообщение было отредактировано: 15 дек 11, 15:28
15 дек 11, 15:26    [11771935]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48832

o_v_a
восстановление базы данных в формате ODS 11.2 с применением -FIX_FSS_METADATA

У вас действительно есть кириллица в метаданных?..

Posted via ActualForum NNTP Server 1.5

15 дек 11, 15:34    [11772039]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1087
Да, кириллица в виде комментариев по тексту процедур и триггеров рассыпана.
15 дек 11, 15:36    [11772065]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1087
Грабли расставлены, делаем работу над ошибкой.

Т.к. на некоторых серверах возникла необходимость устанавливать 64-битный Firebird 2.5 взамен 32-битного 1.5, то всплыла несовместимость:
64-разрядные версии Firebird могут работать с базами, созданными 32-битными версиями, только начиная с ODS 11.1.
Так что при таком раскладе с базой, созданной 32-битной "полуторкой" в ODS 10.1, невозможно было работать с помощью 64-битного Firebird 2.5.

Изменил алгоритм работы скрипта.

Алгоритм работы стал такой:
- запрос путей и паролей
- проверка текущего каталога и указанных путей на предмет наличия в них необходимых файлов (инсталлятор, деинсталлятор, наличие уже установленного Firebird 2.5 и пр.)
- проверка открытых сетевых соединений на порт 3050
- копирование базы пользователей security.fdb
- бэкап базы пользователей security.fdb gbak'ом от Firebird 1.5
- резервное копирование базы данных
- удаление Firebird 1.5 штатным деинсталлятором
- установка Firebird 2.5 инсталлятором
- запуск службы (обычно уже запущена инсталлятором)
- восстановление базы пользователей security2.fdb в формате ODS 11.2 gbak'ом от Firebird 2.5
- восстановление базы данных в формате ODS 11.2 с применением -FIX_FSS_METADATA gbak'ом от Firebird 2.5
- замена базы данных

Если кому надо ставить именно 64-битный, то либо инсталлятор его переименовывайте как 32-битный, либо по тексту скрипта правьте имя проверяемого и запускаемого инсталлятора Firebird 2.5.

Можно и choice в скрипт добавить, чтоб имя инсталлятора подставлять, а не жестко прописывать. Но тогда и два инсталлятора Firebird со скриптом таскать не забывать...
Я не заморачивался - переименовывал инсталлятор.

+

@echo off

cls

rem !!!!!!!!!!!!!Запросы параметров!!!!!!!!!!!
echo ____________________________________________________
echo Укажите, пожалуйста, некоторые необходимые параметры:
echo ____________________________________________________

set /P FB15_PATH=1) Путь к каталогу Firebird 1.5 [%programfiles%\Firebird\Firebird_1_5]:
if "%FB15_PATH%"=="" (set FB15_PATH=%programfiles%\Firebird\Firebird_1_5)
set /P DB_PATH=2) Путь к каталогу с базой данных [d:\AWTSYS]:
if "%DB_PATH%"=="" (set DB_PATH=d:\AWTSYS)
set /P DB_FILE=3) Файл базы данных [buster.fdb]:
if "%DB_FILE%"=="" (set DB_FILE=buster.fdb)
set /P SYSDBA_PASSWORD=4) Пароль пользователя SYSDBA [1]:
if "%SYSDBA_PASSWORD%"=="" (set SYSDBA_PASSWORD=1)

cls

echo Проверяю соединения Firebird SQL.
echo Не допускается наличие ни серверных, ни клиентских соединений...
echo *
netstat -n | find ":3050 "
echo *
for /F "tokens=*" %%i in ('netstat -n ^| find ^":3050 ^" ^| find /C ^"EST^"') do set EST=%%i
if %EST%==0 (goto CONT)
goto err_NETSTAT

:CONT
echo Установленных соединений на порт 3050 не обнаружено.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul
echo *
echo *
echo *
echo ____________________________________________________
echo Проверяю наличие необходимых файлов и соблюдение условий...
echo ____________________________________________________
if not exist "%DB_PATH%\%DB_FILE%" (goto err_DB)
echo Файл базы данных %DB_PATH%\%DB_FILE% ... OK
if not exist "%FB15_PATH%\security.fdb" (goto err_security)
echo База SQL-пользователей %FB15_PATH%\security.fdb ... OK
if not exist "%FB15_PATH%\unins000.exe" (goto err1)
echo Деинсталлятор %FB15_PATH%\unins000.exe ... OK
if not exist "%FB15_PATH%\bin\gstat.exe" (goto err_gstat)
echo Программа %FB15_PATH%\bin\gstat.exe ... OK
echo _____________________________________________
echo Проверяю ODS базы данных %DB_PATH%\%DB_FILE%...
echo _____________________________________________
cd bin
gstat -h -user sysdba -password %SYSDBA_PASSWORD% localhost:%DB_PATH%\%DB_FILE%| find "10.1" > gstat.testODS.delme
for /F "tokens=*" %%i in ('find /C "10.1" ^< gstat.testODS.delme') do set ODS_OK=%%i
If %ODS_OK%==0 (goto err_ODS)
echo Версия ODS 10.1 - ОК
echo *
echo *
echo *
cd..
if not exist "%FB15_PATH%\Firebird-2.5.1.26351_1_Win32.exe" (goto err2)
echo Инсталлятор %FB15_PATH%\Firebird-2.5.1.26351_1_Win32.exe ... OK
if exist %programfiles%\Firebird\Firebird_2_5\security2.fdb (goto err_FB25exist)
echo Установка Firebird 2.5 ... не обнаружена
echo *
echo Все необходимые файлы присутствуют!
echo Необходимые условия для процесса замены версии серевера Firebird соблюдены!
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul

for /F "tokens=1 Delims=:" %%i in ("%FB15_PATH%") do set DRV=%%i
%DRV%:
cd %FB15_PATH%

cls

color 0C

echo **************** В Н И М А Н И Е !!! *************************************
echo Прежде, чем вы продолжите выполнение данного скрипта, рекомендуем
echo убедиться, что Вы сделали копию оригинальной базы данных
echo *
echo *** %DB_PATH%\%DB_FILE%
echo *
echo и файла базы SQL-пользователей
for /F "tokens=*" %%i in ('pwd') do set PWD=%%i
echo *
echo *** %PWD%\security.fdb
echo *
echo Также убедитесь в том, что у вас имеется инсталлятор Firebird 1.5
echo для восстановления в случае неудачи.
echo Скопировать этот инсталлятор можно по ссылке
echo *
echo *** http://sourceforge.net/projects/firebird/files/firebird-win32/1.5.6-Release/Firebird-1.5.6.5026-0-Win32.exe/download
echo *
echo *
echo Нажмите пробел для продолжения или CTRL+C для завершения выполнения
pause >nul

color 08

cls

echo Выберите вариант установки Firebird SQL
ECHO 1 - Superserver (по умолчанию)
ECHO 2 - Classic server

CHOICE /C 12

IF errorlevel 2 goto CS
IF errorlevel 1 goto SS

:CS
set ServerType=ServerComponent\ClassicServerComponent
set ST=Classic
goto 1

:SS
set ServerType=ServerComponent\SuperServerComponent
set ST=Superserver

:1
cls

rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo ____________________________________________________
echo Вы указали следующие параметры:
echo ____________________________________________________
echo Путь к Firebird SQL 1.5: %FB15_PATH%\
echo Путь к каталогу с базой данных: %DB_PATH%
echo Файл базы данных: %DB_FILE%
echo Пароль пользователя SYSDBA: %SYSDBA_PASSWORD%
echo Вариант установки Firebird 2.5: %ST%
echo ____________________________________________________
echo Все готово для начала процесса замены версии серевера Firebird!
echo ____________________________________________________
echo Нажмите пробел для продолжения или CTRL+C для завершения выполнения
pause >nul
echo *
echo *
echo *
echo _____________________________________________
echo Копирую базу SQL-пользователей security.fdb -- security.org
echo _____________________________________________
copy security.fdb security.org
if exist "%FB15_PATH%\security1.fbk" (del "%FB15_PATH%\security1.fbk")
echo _____________________________________________
echo Выполняю бэкап базы пользователей...
echo _____________________________________________
echo
cd bin
gbak -user sysdba -password %SYSDBA_PASSWORD% -b -v localhost:"%FB15_PATH%\security.fdb" "%FB15_PATH%\security1.fbk"
echo *
echo *
echo *
echo Завершен бэкап базы данных SQL-пользователей.
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul
echo *
echo *
echo *
echo _____________________________________________
echo Резервное копирование базы данных...(1/9)
echo _____________________________________________
if exist "%DB_PATH%\%DB_FILE%.fbk" (del /q "%DB_PATH%\%DB_FILE%.fbk")
if exist "%DB_PATH%\%DB_FILE%.fb1" (del /q "%DB_PATH%\%DB_FILE%.fb1")
if exist "%DB_PATH%\%DB_FILE%.fb2" (del /q "%DB_PATH%\%DB_FILE%.fb2")
gbak -user sysdba -password %SYSDBA_PASSWORD% -b -v localhost:"%DB_PATH%\%DB_FILE%" "%DB_PATH%\%DB_FILE%.fbk"
echo *
echo *
echo *
echo Завершен бэкап базы данных
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul
cd..
echo _____________________________________________
echo Удаляю Firebird SQL 1.5...(2/9)
echo _____________________________________________
unins000.exe /verysilent
echo Удаление Firebird SQL 1.5 выполнено!
echo *
echo *
echo *
echo _____________________________________________
echo Устанавливаю Firebird SQL 2.5...(3/9)
echo _____________________________________________

Firebird-2.5.1.26351_1_Win32 /VERYSILENT /LOG /NORESTART /FORCE /TASKS="!UseGuardianTask,UseServiceTask,AutoStartTask,!MenuGroupTask,CopyFbClientAsGds32Task,CopyFbClientToSysTask" /COMPONENTS="%ServerType%,ServerComponent, DevAdminComponent,ClientComponent" /NOICONS
echo Установка завершена!
echo *
echo *
echo *
echo _____________________________________________
echo Запуск службы FirebirdServerDefaultInstance...
echo _____________________________________________
net start FirebirdServerDefaultInstance
echo *
echo *
echo *
echo _____________________________________________
echo Копирую алиасы...(4/9)
echo _____________________________________________
rem copy security.fdb "%programfiles%\Firebird\Firebird_2_5"
copy aliases.conf "%programfiles%\Firebird\Firebird_2_5"
cd "%programfiles%\Firebird\Firebird_2_5\bin"
echo *
echo *
echo *
echo _____________________________________________
echo Преобразование базы SQL-пользователей...(5/9)
echo _____________________________________________
if exist "%programfiles%\firebird\firebird_2_5\security.fdb2" (del "%programfiles%\firebird\firebird_2_5\security.fdb2")
echo Выполняю восстановление базы пользователей в формате ODS 11.2...
gbak -user sysdba -password masterkey -v -p 16384 -c "%FB15_PATH%\security1.fbk" localhost:"%programfiles%\Firebird\Firebird_2_5\security.fdb2"
echo *
echo *
echo *
echo Завершено восстановление базы данных SQL-пользователей.
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul

echo *
echo *
echo *
echo _____________________________________________
echo Модификация базы пользователей...(6/9)
echo _____________________________________________
isql -user sysdba -password masterkey localhost:"%programfiles%\Firebird\Firebird_2_5\security.fdb2" -i "%ProgramFiles%\Firebird\Firebird_2_5\misc\upgrade\security\security_database.sql"
echo Выполнено!
echo *
echo *
echo *
echo _____________________________________________
echo Подмена базы пользователей...(7/9)
echo _____________________________________________
cd..
rename security2.fdb security2.org
rename security.fdb2 security2.fdb
echo Выполнено!
cd bin
echo *
echo *
echo *
echo _____________________________________________
echo Восстановление базы данных в формате ODS 11.2 ...(8/9)
echo _____________________________________________
gbak -user sysdba -password %SYSDBA_PASSWORD% -FIX_FSS_METADATA WIN1251 -p 16384 -c -v "%DB_PATH%\%DB_FILE%.fbk" localhost:"%DB_PATH%\%DB_FILE%.fb2"
echo *
echo *
echo *
echo Завершено восстановление базы данных SQL-пользователей.
echo Оцените результат в строках выше.
echo ____________________________________________________
echo Нажмите пробел для продолжения
pause >nul
echo *
echo *
echo *
echo _____________________________________________
echo Замена базы данных...(9/9)
echo _____________________________________________
rename "%DB_PATH%\%DB_FILE%" "%DB_FILE%.fb1"
rename "%DB_PATH%\%DB_FILE%.fb2" "%DB_FILE%"
echo Оригинальный файл базы данных сохранен под именем %DB_FILE%.fb1
echo *
echo *
echo *
echo _____________________________________________
echo Скрипт завершил работу!
echo _____________________________________________

goto ex

:err_NETSTAT
echo Найдены открытые соединения на порт 3050!
echo Завершите работу приложений, работающих с этим
echo или другими серверами Firebird
echo Работа скрипта будет завершена.
goto ex


:err_FB25exist
echo Найден каталог %programfiles%\Firebird\Firebird_2_5
echo Необходимо удалить существующую инсталляцию Firebird_2_5
echo и удалить этот каталог в том числе.
echo Работа скрипта будет завершена.
goto ex

:err_DB
echo Не могу найти оригинальную базу данных %DB_PATH%\%DB_FILE%
echo Возможно, вы опечатались при вводе имени файла.
echo Работа скрипта будет завершена.
goto ex

:err_security
echo Не могу найти базу данных SQL-пользователей
echo %FB15_PATH%\security.fdb
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново
goto ex

:err_gstat
echo Не могу найти утилиту %FB15_PATH%\bin\gstat
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново.
echo Либо вы неверно указали каталог существующей установки Firebird 1.5:
echo %FB15_PATH%
goto ex


:err_ODS
echo База данных %DB_PATH%\%DB_FILE%
echo не в формате Firebird 1.5!
echo Если была попытка неудачного обновления,
echo то восстановите базу данных из резервной копии
goto ex

:err1
echo Не найден файл удаления Firebird 1.5
echo %FB15_PATH%\unins000.exe
echo Если была попытка неудачного обновления сервера,
echo то установите Firebird 1.5 заново
goto ex

:err2
echo Ошибка установки Firebird 2.5
echo Не найден установочный файл Firebird-2.5.1.26351_1_Win32.exe
echo Скопируйте этот файл в каталог, в который в текущий момент
echo уже установлен Firebird 1.5
echo Либо вы неверно указали каталог существующей установки Firebird 1.5:
echo %FB15_PATH%
goto ex

:ex
echo _____________________________________________
echo Нажмите любую клавишу для завершения...
pause > nul
20 янв 12, 09:33    [11936911]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13381
А если переделать скрипт для встраиваемых серверов?
К примеру у 10-ти пользователей установлена программа с firebird embedded 2.0, и нужно базу "сконвертировать" в 2.5?
24 янв 12, 16:45    [11962118]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1087
X11,
В поиск: embedded+gbak
Скрипт модернизируй.
Вместо инсталляции/деинсталляции полнофункционального Firebird SQL надо только иметь в дополнение к наличествующему у клиента embedded 1.5:
-gbak от 2.0
-gbak от 2.5
-embedded от 2.5
Т.е. упрощенно примерно так:
-скопировать fbembed.dll от 2.0 как fbclient.dll
-скопировать gbak от 2.0
-сделать бэкап базы
-скопировать fbembed.dll от 2.5 как fbclient.dll
-сделать рестор базы
Ну, как-то так, в общем.
В результате оставляешь клиенту fbembed.dll от 2.5 и базу с ODS 11.2.
Мусор прибираешь под занавес и всё.
25 янв 12, 09:02    [11965200]     Ответить | Цитировать Сообщить модератору
 Re: Для Firebird под Windows: скрипт для замены сервера и ODS базы FB 1.5 --> FB 2.5.  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1087
o_v_a
в дополнение к наличествующему у клиента embedded 1.5:

не полуторка, а 2.0, конечно же.
25 янв 12, 09:04    [11965207]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить