В одной из программ (Суперокна), работающих на СУБД FireBird стала возникать ошибка: BLOB NOT FOUND. Тестирование и исправление встроенными средствами программы результата не дало. Пришлось воспользоваться утилитами Firebird gfix.exe (проверка и исправление ошибок) и gbak.exe (создание и восстановление из резервной копии).
Как восстановить поврежденную БД Firebird
- Выключаем сервер Firebird. Для этого останавливаем службу Firebird Server
- Копируем нужный файл базы данных. Лучше временно скопировать файл в папку с установленным Firebird. В моем случае это была папка C:\Program Files\Firebird\Bin
- Включаем сервер Firebird
- Запускаем командную строку с правами администратора. и переходим в папку с установленным Firebird (при помощи команды cd Имя папки)
Проверяем базу данных на повреждения
gfix.exe -v -full -user sysdba -password masterkey base.fdbВ параметре -user указываем имя пользователя БД , а в параметре –password пароль пользователя. Эти параметры нужно указывать для всех команд по восстановлению БД
Если в отчете есть ошибки, то исправляем их командой
gfix.exe –mend -user sysdba -password masterkey base.fdbПовторно проверяем на повреждения базу данных
gfix.exe -v -full -user sysdba -password masterkey base.fdbЕсли ошибки сохранились то делаем резервную копию БД
gbak -b -v -ig -g -user sysdba -password masterkey base.fdb backup.fbkОсновные параметры:
base.fdb – поврежденный файл базы данных
backup.fbk – файл резервной копии-ig – ошибки контрольных сумм будут игнорироваться
-g – запрет сборки мусора во время резервированияВосстанавливаем базу данных из резервной копии
gbak -c -v -user sysdba -password masterkey backup.fbk newbase.fdb- Проверяем новую базу на ошибки
После проделанных операций удалось восстановить работу базы данных Firebird и избавиться от ошибки BLOB NOT FOUND.