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:
@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.