Как вызвать сбой сервера Firebird
Иногда необходимо вызвать сбой сервера Firebird, чтобы создать файл дампа или проверить надёжность вашей схемы резервного копирования/репликации, либо в целях отладки.
Чтобы спровоцировать сбой в Windows, вы можете использовать следующую UDF: badudf.dll.7z
Скачайте её, поместите в папку UDF и создайте .bat файл со следующим содержимым:
@echo off
setlocal enabledelayedexpansion enableextensions
set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey
del 2>nul
echo create database 'localhost:!dbnm!' user '!usr!' password '!psw!'; | "!fbc!\isql.exe" -q -z
(
echo set echo on;
echo declare external function crashme
echo returns int by value
echo entry_point 'crashme' module_name 'badudf';
echo commit;
echo show function;
echo select crashme(^) from rdb$database;
) > %~dp0tmptest.sql.tmp
"!fbc!\isql.exe" ^
localhost:!dbnm! ^
-q -i %~dp0tmptest.sql.tmp ^
-user !usr! -pas !psw!
del !dbnm!
del %~dp0tmptest.sql.tmp
В скрипте присвойте переменной окружения fbc путь к папке Firebird, например
c:\Firebird25.in или C:\Firebird30
и ваши фактические логин и пароль суперпользователя (по умолчанию SYSDBA/masterkey) переменным usr и psw.
Скрипт создаст временную базу данных, зарегистрирует в ней UDF и выполнит «killer query», после чего удалит базу данных.
Результатом будет сбой Firebird, и если вы правильно настроили Windows Error Reporting, будет создан дамп процесса firebird.exe.
Пожалуйста, не регистрируйте BadUDF.dll в рабочей базе данных!
Также удалите её из папки UDF после эксперимента.