Cette page a été traduite automatiquement. Lisez l'original en anglais. English

Bibliothèque IBSurgeon

Comment faire planter le serveur Firebird

Иногда необходимо вызвать сбой движка сервера Firebird, чтобы создать файл дампа или проверить надежность вашей схемы резервного копирования/репликации, или в целях отладки.

Чтобы спровоцировать сбой в Windows, вы можете использовать следующую UDF: badudf.dll.7z

Скачайте её, поместите в папку UDF и создайте .bat файл со следующим содержимым:

Code
@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-запрос», после чего удалит базу данных.

Результатом будет сбой Firebird, и если у вас правильно настроен отчет об ошибках Windows, будет создан дамп процесса firebird.exe.

Пожалуйста, не регистрируйте BadUDF.dll в производственной базе данных!

Также удалите её из папки UDF после эксперимента.