Firebird sunucusu nasıl çökertilir
Bazen Firebird sunucu motorunu çökertmek gerekebilir; bir dump dosyası oluşturmak, yedekleme/çoğaltma şemanızın güvenilirliğini kontrol etmek veya hata ayıklama amacıyla.
Windows’ta çökmeyi tetiklemek için şu UDF’yi kullanabilirsiniz: badudf.dll.7z
İndirin, UDF klasörüne koyun ve aşağıdaki içerikle bir .bat dosyası oluşturun:
@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
Betikte, fbc ortam değişkenine Firebird klasörünün yolunu atayın, örneğin
c:\Firebird25.in veya C:\Firebird30
ve gerçek süper kullanıcı giriş bilgilerinizi ve şifrenizi (varsayılan SYSDBA/masterkey) usr ve psw değişkenlerine atayın.
Betik geçici bir veritabanı oluşturacak, içine UDF’yi kaydedecek ve “killer query"yi çalıştıracak, ardından veritabanını silecektir.
Sonuç, Firebird’ün çökmesi olacaktır ve Windows Hata Bildirimi’ni doğru şekilde yapılandırdıysanız, firebird.exe sürecinin dump dosyası oluşturulacaktır.
Lütfen BadUDF.dll’yi üretim veritabanına kaydetmeyin!
Ayrıca, deneyden sonra UDF klasöründen silin.