Esta página foi traduzida por máquina. Leia o original em inglês. English

Biblioteca IBSurgeon

Como fazer o servidor Firebird travar

Às vezes é necessário derrubar o mecanismo do servidor Firebird, para criar um arquivo de despejo (dump) ou verificar a confiabilidade do seu esquema de backup/replicação, ou para fins de depuração.

Para provocar a queda no Windows, você pode usar a seguinte UDF: badudf.dll.7z

Baixe-a, coloque-a na pasta de UDFs e crie o arquivo .bat com o seguinte conteúdo:

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

No script, atribua à variável de ambiente fbc o caminho para a pasta do Firebird, por exemplo

c:\Firebird25.in ou C:\Firebird30

e seu login e senha reais de superusuário (SYSDBA/masterkey é o padrão) às variáveis usr e psw.

O script criará o banco de dados temporário, registrará a UDF nele e executará a “consulta assassina”, após o que excluirá o banco de dados.

O resultado será a queda do Firebird e, se você tiver configurado corretamente o Relatório de Erros do Windows, o despejo do processo firebird.exe.

Por favor, não registre a BadUDF.dll no banco de dados de produção!

Também, exclua-a da pasta de UDFs após o experimento.