Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

IBSurgeon kütüphanesi

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:

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

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.