FAQ по FireBird. 2021-12-08 11'05'53, Среда ============================================= ! Первое и самое важное: InterBase, если он есть и используется, должен быть удалён и заменён на FireBird. Содержание (перечень освещённых вопросов): --------------------------------------------- * Подключение к БД, с указанием порта * Клиент для работы с FB * Оперативный отчёт (нюансы) * Установка и работа нескольких версий FB на одном сервере/ПК c ОС семейства Windows * Обновление Windows 10 удаляет FireBird 1.5 * Чиним БД * Подключение к БД, с указанием порта ============================================= <тут IP-адрес сервера>/<тут порт, как правило 3050>:<тут путь к БД на сервере> 192.224.1.222/3050:C:\databases\APTEKA.FDB * Клиент для работы с FB ============================================= Клиент для работы с FB это библиотека fbclient.dll, лежит в папке BIN с установленным FB. Эту библиотеку нужно положить в папку с программой, которой она нужна (ДелоПро, Оперативный отчёт и т.п.), или в системную папку Windows (там её ОС будет искать по требованию программ). Я рекомендую первый вариант (dll в папку с программой). Также: СТАРОЕ название этой библиотеки - gds32.dll, т.е. если очень нужно именно оно, просто переименуйте fbclient.dll в gds32.dll. Клиент чувствителен к разрядности (и как показывает практика, к разрядности СУБД чувствительно и некоторое ПО, но это не точно). На сейчас правило: ставим х86 версию FireBird (32 разряда) вне зависимости от разрядности ОС, клиента берём именно его же. * Оперативный отчёт (нюансы) ============================================= Возможно при переустановке FB в программе "Оперативный отчёт" могут возникать ошибки при контроле или прочем таком. Чаще всего проблема в отсутствии MyUDFLib.dll в папке UDF где установлен FB, например: D:\database\FireBird\udf Т.е. решение - где-то найти эту библиотеку (в какой-то из подпапок Oper, или с ПК, где всё работает и т.п.; это библиотека СОМИАЦ) и поместить по указанному выше пути. Для FireBird3 нужен ДРУГОЙ файл MyUDFLib.dll (не тот, что работал в FB1.5), по запросу СОМИАЦ отдаст, кому будет надо. * Установка и работа нескольких версий FB на одном сервере/ПК c ОС семейства Windows ============================================= Это и возможно, и удобно, а иногда и необходимо. Нюансов тут особо нет, кроме: а) FB 1.5 ставим первым (если он вообще нужен), его порт будет всегда 3050. б) Все прочие FB ставим потом, порт их работы настраивается в их conf-файлах (firebird.conf). в) Рекомендуем - особенно для 1.5 FB - не использовать мастер установки, а разворачивать эти СУБД из .zip-дистрибутивов. г) некоторое ПО не готово работать на FB выше 1.5, желательно узнавать у разработчиков, можно ли переходить на свежие версии. * Обновление Windows 10 удаляет FireBird 1.5 ============================================= Описание общее: --------------------------------------------- Проблем тут две: Обновление Windows 10 удаляет FireBird 1.5 и файл gds32.dll. В обновлённой версии ОС уже нельзя установить FireBird 1.5 с помощью стандартного мастера установки. По проблеме 1: И пусть удаляет, наша задача - вернуть и чтобы работало. Нужно знать, что обновление Windows 10 все устаревшие файлы переносит в папку Windows.old. Т.е. в этой папке вы и найдёте FireBird, и всегда можете посмотреть, где лежал клиент gds32.dll. Для возвращения FireBird нужно его папку из Windows.old перенести обратно в "C:\Program Files (x86)" (ну или в другую, например "C:\db", что, возможно, обезопасит от последующих удалений крупными обновлениями ОС) и перерегистрировать нужные службы. Перерегистрация служб FireBird - это запуск файла "FireBird\bin\install_super.bat", которого НЕТ по этому пути, если СУБД ставили из мастера установки.. :/ Этот файл есть в архиве-дистрибутиве FireBird и он же приложен к этому сообщению. Его содержимое: --------------------------------------------------- instreg install -z instsvc install -auto -superserver -guardian -z instsvc start --------------------------------------------------- И важное по этому пункту: запускать надо с правами администратора НЕ ПО правому клику на файле, а из консоли (запущенные с правами администратора FAR или cmd). Связано это с тем, что запуская с правами администратора bat-файл через меню по правому клику, ОС папкой выполнения делает system, в котором instsvc и instreg (программ FireBird для регистрации как служб Windows) нет. Если вдруг ставите с нуля (из того же zip-дистрибутива), то хорошо бы вернуть (из "удалённого" FireBird) папку "FireBird\udf", можно ещё и файл "FireBird\security2.fdb". Далее нужно поместить клиентскую gds32.dll туда, где она была до обновления ОС (папки "Windows\SysWOW64" и/или "Windows\System32"; ну или положить в папку с программой, которой она нужна). Эта библиотека находится по пути "FireBird\bin\fbclient.dll" (да-да, gds32.dll и fbclient.dll - одинаковые, просто имена разные, смело можно брать fbclient.dll и переименовывать в gds32.dll), ну или где-то в папке Windows.old (ищите по поиску, как вариант: Windows.old\Windows\SysWOW64 или Windows.old\Windows\System32). По проблеме 2: Тут всё просто - загружаете дистрибутив FireBird 1.5 в архиве, распаковываете, запускаете "FireBird\bin\install_super.bat", копируете клиентскую библиотеку куда надо - всё это подробно описано выше. Дистрибутив можно взять и с сайта СОМИАЦ: https://somiac.ru/Downloads/firebird/Firebird-1.5.6.5026-0_win32.zip Обновление от 2020-09-22, а как сделать, чтобы ОС при загрузке проверяла наличие FB? Порядок действий: --------------------------------------------- 1. Папка FB должна находиться не в "Program files" (в этом случае обновление ОС её не затронет). Установка из репозитория СОМИАЦ менеджером пакетов ставит FB 1.5 по пути "C:\somiac.db\FireBird 1.5". 2. Обновление ОС будет убирать регистрацию службы FB. Вариант - при старте ОС проверять наличие службы FB 1.5, и если её нет - заново регистрировать её и стартовать. Скрипт PowerShell: https://somiac.ru/Downloads/firebird/reregister_FB_1.5.ps1 Как повесить, см. в инете и, например, тут: "https://somiac.ru/Downloads/firebird/reregister_FB_1.5 (gpedit.msc).jpg" (картинка) * Чиним БД ============================================= Доступный способ попытаться поднять БД: сделать её резервное копирование (с хитрыми ключами) с последующим восстановлением из резервной копии (backup & restore). Примеры ниже запускают утилиту gbak.exe, которая находится в bin папке FB. Создайте cmd-файлы с этими командами и запускайте (из FAR Manager) в этой папке. Пути должны быть корректными, т.е. меняйте их под ваше текущее окружение (указывайте БД, которую лечите). Перед процессом - лучше отключите пользователей от БД (остановите сервер и переименуйте файл БД; сервер запустите). В примерах "C:\WSMAIN.FDB" - путь к файлу БД, "C:\WSMAIN.FBK" - путь к файлу резервной копии, "SYSDBA" - логин пользователя с админ-правами, "SYSPASS" - пароль этого пользователя, "result.txt" - журнал выполненяи операции. Резервное копирование c "Ignores checksum and limbo transactions": gbak.exe -b -v -ig -g -l localhost:C:\WSMAIN.FDB C:\WSMAIN.FBK -user SYSDBA -password SYSPASS -verbose -y result.txt Восстановление: gbak.exe -c -v C:\WSMAIN.FBK localhost:C:\WSMAIN.FDB -user SYSDBA -password SYSDBA -verbose -y result.txt Хорошая инструкция с описаниями ключей gbak: http://www.destructor.de/firebird/gbak.htm