Holger Klemt, August 2026
Moderne Anwendungen stellen zunehmend Anforderungen an Datenbanken, die über mehrere Standorte, Server und Umgebungen hinweg kontinuierlich verfügbar sein müssen. Ob Hochverfügbarkeit, die Migration von einer Desktop-Anwendung zu einer webbasierten Lösung, verteilte Datenbanken oder die kontinuierliche Synchronisierung zwischen verschiedenen Rechenzentren – eine zuverlässige Datenbankreplikation ist dabei ein entscheidender Bestandteil.
Unsere Firebird-Replikationslösung wurde genau für solche Szenarien entwickelt. Sie kombiniert transaktionssichere Replikation, Synchronisierung nahezu in Echtzeit, One-to-Many-Replikation und Unterstützung für große Firebird-Datenbanken – und kann in bestehende Produktionsumgebungen integriert werden, ohne die Datenbank offline nehmen zu müssen.
Das Replikationsframework unterstützt Firebird 2.5 und neuere Versionen, einschließlich Firebird 4, Firebird 5 und aktuellen Firebird 6 Datenbanken.
Ein wesentlicher Vorteil besteht darin, dass die Replikation direkt auf Datenbankebene mithilfe von aktiven Triggern und einem Transaktionsprotokoll umgesetzt wird. Änderungen an der Quelldatenbank werden als Transaktionen erfasst und können anschließend an eine oder mehrere Ziel-Datenbanken übertragen werden.
Diese Architektur stellt sicher, dass Änderungen nicht verloren gehen, wenn beispielsweise eine Netzwerkverbindung oder der Replikationsprozess vorübergehend nicht verfügbar ist.
Eine der wichtigsten Anforderungen bei Migrations- oder Hochverfügbarkeitsprojekten besteht darin, die Replikation aktivieren zu können, ohne den laufenden Betrieb der Anwendung zu unterbrechen.
Unser Replikationsverfahren ist genau auf dieses Szenario ausgelegt.
Sobald die Replikation initialisiert wurde, beginnen die erforderlichen Trigger damit, INSERT-, UPDATE- und DELETE-Operationen in einem dedizierten Transaktionsprotokoll zu erfassen. Die Produktionsdatenbank läuft weiterhin einwandfrei.
Die initiale Synchronisierung erfolgt anschließend durch die Erstellung eines Backups der Master-Datenbank und dessen Wiederherstellung auf dem Zielserver. Auch hierfür muss die Produktionsdatenbank nicht offline genommen werden.
Nachdem die Ziel-Datenbank initialisiert wurde, überträgt der Replikationsprozess alle Transaktionen, die während der Erstellung des Backups entstanden sind, und setzt anschließend die kontinuierliche Synchronisierung mit allen neuen Transaktionen fort.
Zuverlässigkeit steht im Mittelpunkt der Architektur.
Angenommen, die Master-Datenbank hat 100 Transaktionen gesammelt, die noch repliziert werden müssen. Fällt die Netzwerkverbindung aus, nachdem nur ein Teil der Daten übertragen wurde, gehen die verbleibenden Transaktionen nicht verloren.
Sie bleiben im Transaktionsprotokoll gespeichert und werden beim nächsten Replikationsvorgang erneut berücksichtigt.
Der Replikationsprozess ist daher nicht auf eine dauerhaft verfügbare Netzwerkverbindung angewiesen. Ein Zielserver kann sogar über mehrere Tage oder Wochen nicht verfügbar sein, während die Master-Datenbank weiterhin alle für die spätere Synchronisierung erforderlichen Transaktionen erfasst.
Sobald das Zielsystem wieder erreichbar ist, wird die Replikation an der Stelle fortgesetzt, an der sie unterbrochen wurde.
Die Architektur unterstützt auch die One-to-Many-Replikation.
Eine einzelne Master-Datenbank kann ihre Daten an mehrere Zielserver replizieren. Dabei wird jedes Zielsystem unabhängig verwaltet und überwacht.
Beispielsweise:
Master-Server → Slave 1
Master-Server → Slave 2
Master-Server → Slave 3
Ist beispielsweise Slave 2 vorübergehend nicht verfügbar, kann die Replikation zu Slave 1 und Slave 3 normal weiterlaufen. Die für Slave 2 erforderlichen Transaktionen bleiben auf dem Master verfügbar, bis dieses Zielsystem wieder erreichbar ist.
Dadurch eignet sich die Architektur besonders für verteilte Systeme, bei denen einzelne Standorte über unzuverlässige Netzwerkverbindungen verfügen oder Server zeitweise nicht verfügbar sind.
Abhängig von der Struktur der Datenbank kann die Technologie auch eine Multi-Master-Replikation unterstützen.
In einer solchen Konfiguration können mehrere Server als Master-Datenbanken arbeiten und Änderungen untereinander austauschen.
Multi-Master-Umgebungen erfordern jedoch eine sorgfältige Betrachtung des Datenbankdesigns, insbesondere bei der Generierung von Primärschlüsseln. Automatisch generierte Schlüssel müssen beispielsweise so gestaltet sein, dass unabhängig auf verschiedenen Master-Servern erzeugte Datensätze nicht zu Schlüsselkonflikten führen.
Falls erforderlich, können Datenbank-Metadaten und Anwendungslogik entsprechend angepasst werden, um eine solche Architektur zu unterstützen.
Der Replikationsprozess ist für einen Betrieb nahezu in Echtzeit ausgelegt.
In einer typischen Umgebung werden Transaktionen kontinuierlich über einen Push/Pull-Prozess übertragen. Die tatsächliche Latenz hängt dabei von der Leistungsfähigkeit der Server, dem Transaktionsvolumen und den Netzwerkbedingungen ab.
In einer großen verteilten Installation waren Änderungen an entfernten Standorten typischerweise innerhalb von weniger als 10 Sekunden verfügbar. Selbst bei hoher Systemlast lag die Verzögerung in der Regel bei etwa einer Minute.
Auch Standorte mit langsameren oder zeitweise unzuverlässigen Internetverbindungen konnten weiterhin lokal arbeiten. Sobald die Verbindung wiederhergestellt war, wurden die aufgelaufenen Transaktionen automatisch synchronisiert.
Die Technologie wurde bereits in anspruchsvollen Produktivumgebungen mit großen Datenbanken und geografisch verteilten Systemen eingesetzt.
Ein besonders umfangreiches Projekt umfasste:
Die einzelnen Datenbanken an den entfernten Standorten enthielten jeweils Teilmengen der zentralen Daten und übertrugen lokale Änderungen zurück an die zentrale Infrastruktur.
Auch bei unzuverlässigen Netzwerkverbindungen an einzelnen Standorten stellte die Replikationsarchitektur sicher, dass Transaktionen solange verfügbar blieben, bis sie erfolgreich übertragen werden konnten.
Große Firebird-Datenbanken können erhebliche Mengen an BLOB-Daten enthalten, insbesondere in Anwendungen aus Bereichen wie Gesundheitswesen, Dokumentenmanagement, Bildverarbeitung oder Archivierung.
In einer anderen Installation erreichte die gesamte Datenbankumgebung einschließlich Transaktions-protokollen und jährlicher BLOB-Datenbanken eine Größe von rund 7 TB.
Bei sehr großen Datenmengen kann es sinnvoll sein, historische Daten in separate Datenbanken auszulagern.
Beispielsweise können jährliche Transaktions- oder BLOB-Datenbanken nach Abschluss eines Geschäftsjahres geschlossen und schreibgeschützt werden. Sie bleiben weiterhin über die Hauptdatenbank zugänglich, vergrößern jedoch nicht mehr die aktive Produktionsdatenbank.
Dieser Ansatz kann zukünftige Backup- und Restore-Vorgänge erheblich vereinfachen und beschleunigen.
Ein vorübergehender Ausfall eines Zielservers oder einer Netzwerkverbindung führt nicht dazu, dass die Master-Datenbank keine Änderungen mehr erfassen kann.
Dies ist insbesondere bei verteilten Installationen von großer Bedeutung.
Ein entfernter Server kann neu gestartet werden, die Netzwerkverbindung verlieren oder über einen längeren Zeitraum nicht verfügbar sein. Sobald er wieder erreichbar ist, kann der Replikationsprozess mit den Transaktionen fortgesetzt werden, die während seiner Abwesenheit im Transaktionsprotokoll gespeichert wurden.
Das Ergebnis ist eine Replikationsarchitektur, die auf zuverlässiger nachträglicher Synchronisierung ohne Datenverlust basiert und nicht voraussetzt, dass alle Server und Netzwerkverbindungen jederzeit verfügbar sind.
Eine zuverlässige Replikation beginnt mit einem geeigneten Datenbankdesign.
Idealerweise verfügt jede Tabelle, die repliziert werden soll, über einen Primärschlüssel oder zumindest über einen geeigneten eindeutigen Index.
Auch Primärschlüssel sollten möglichst kompakt sein. Extrem komplexe Primärschlüssel, die sich über eine große Anzahl von Spalten erstrecken, können die Replikation und die Entwicklung der Anwendung unnötig komplizieren.
Tabellen ohne Primärschlüssel benötigen gegebenenfalls einen alternativen Mechanismus zur eindeutigen Identifizierung von Datensätzen. Abhängig von der Struktur der Datenbank kann hierfür eine Technologie auf Basis von Firebirds RDB$DB_KEY in Betracht gezogen werden.
Bei komplexen Datenbankumgebungen können die Metadaten bereits vor Beginn der Implementierung analysiert werden, um die geeignete Replikationsstrategie zu bestimmen.
Nach der Implementierung arbeitet das Replikationssystem weitgehend im Hintergrund.
In vielen Installationen ist keine regelmäßige manuelle Wartung erforderlich.
Dennoch kann es vorkommen, dass Datenbankadministratoren umfangreiche Änderungen an den Metadaten oder der Datenbankstruktur durchführen. In solchen Fällen kann es erforderlich sein, die Replikation neu zu initialisieren oder anzupassen.
Für diese Situationen kann technische Unterstützung über ein Prepaid-Support- und Hotline-System bereitgestellt werden. Administratoren können dadurch bei Bedarf Unterstützung anfordern, ohne einen permanenten Wartungsvertrag ausschließlich für gelegentliche Replikationsvorgänge abschließen zu müssen.
Jedes Replikationsprojekt ist unterschiedlich. Die Größe einer Datenbank allein reicht daher nicht aus, um den tatsächlichen Implementierungsaufwand zu bestimmen.
Vor Beginn eines Projekts empfehlen wir daher eine Analyse der folgenden Punkte:
Für eine erste technische Bewertung genügt häufig bereits ein Metadata-Only-Backup. Dadurch kann die Struktur der Datenbank analysiert werden, ohne dass sensible Kundendaten bereitgestellt werden müssen.
Die Implementierung und Schulung können vollständig remote durchgeführt werden – auch bei Kunden in weit entfernten Zeitzonen.
Das Replikationsframework kann zusammen mit seinem Quellcode bereitgestellt werden. Dadurch haben Kunden die Möglichkeit, die Funktionsweise nachzuvollziehen, Anpassungen vorzunehmen und die Lösung in ihre bestehende Systemumgebung zu integrieren.
Dies ist insbesondere dann von Vorteil, wenn die Replikation Teil eines größeren Migrationsprojekts ist, beispielsweise bei der Umstellung einer bestehenden Desktop-Anwendung auf eine webbasierte Architektur, während das bestehende Produktivsystem weiterhin verfügbar bleiben soll.
Datenbankreplikation ist besonders wertvoll, wenn ein Unternehmen eine bestehende Anwendung modernisieren möchte, ohne längere Ausfallzeiten in Kauf nehmen zu müssen.
Beispielsweise kann ein Krankenhausinformationssystem (KIS) zusammen mit einer zugehörigen Bilddatenbank kontinuierlich verfügbar bleiben müssen, während die bestehende Desktop-Anwendung schrittweise auf eine moderne Webanwendung migriert wird.
Eine transaktionsbasierte Replikationsschicht kann dabei als Brücke zwischen der bestehenden und der neuen Systemumgebung dienen. Beide Systeme können parallel betrieben werden, während die Daten kontinuierlich synchronisiert werden.
Dadurch lassen sich Migrationsrisiken erheblich verringern und ein kontrollierter Übergang anstelle einer disruptiven „Big-Bang“-Migration ermöglichen.
Die hier beschriebene Architektur wurde nicht nur für theoretische Szenarien entwickelt. Sie wird seit mehr als einem Jahrzehnt in anspruchsvollen Produktivumgebungen mit geografisch verteilten Firebird-Datenbanken, großen Transaktionsvolumina, unzuverlässigen Netzwerkverbindungen und erheblichen Datenmengen eingesetzt.
Die Kombination aus Transaktionsprotokollierung, triggerbasierter Erfassung von Änderungen, Push/Pull-Replikation und unabhängiger Verwaltung der einzelnen Replikationsziele bietet eine robuste Grundlage für hochverfügbare und verteilte Firebird-Systeme.
Für Unternehmen, die eine Firebird-Migration, ein Hochverfügbarkeitsprojekt, eine verteilte Datenbankarchitektur oder eine Synchronisierung nahezu in Echtzeit planen, ist eine technische Analyse der bestehenden Datenbankumgebung der erste Schritt.
Auf Grundlage der Datenbank-Metadaten und aktueller Datenbankstatistiken können anschließend eine realistische Implementierungsplanung, eine geeignete Replikationsarchitektur und ein projektspezifisches Angebot erstellt werden.
(German-language version below)
IBExpertFunctionLibrary is a collection of Firebird database functions developed by IBExpert as a modern replacement for older UDF libraries (FreeAdhocUDF and rFunc).
Traditional Firebird UDFs are external binary libraries, usually written in languages such as C/C++ or Pascal. They were commonly used with Firebird 2.x to add functionality that was not available directly in SQL.
The problem is that binary UDFs are platform-dependent and can also affect server stability. A faulty UDF can potentially crash the Firebird server process. For this reason, Firebird has gradually moved away from traditional UDFs.
Starting with Firebird 3, Firebird recommends newer mechanisms such as:
instead of traditional binary UDFs.
From Firebird 4 onward, traditional UDF support is disabled by default in firebird.conf.
This creates a migration problem for older applications that contain SQL such as:
SELECT some_old_udf(field1)
FROM customer;
or:
SELECT rFuncFunction(...)
FROM orders;
Rewriting a large application and all its database code can be expensive.
IBExpertFunctionLibrary was created primarily to provide replacements for these legacy functions while allowing applications to run on modern Firebird versions.
The most important scenario is:
Old Firebird 2.x application -> uses FreeAdhocUDF / rFunc -> database upgraded to Firebird 3 / 4 / 5 -> IBExpertFunctionLibrary provides compatible replacements
This can significantly reduce the amount of application SQL that must be changed during a Firebird migration.
With an old UDF, the database declaration typically references an external binary library:
DECLARE EXTERNAL FUNCTION MY_FUNCTION
VARCHAR(255)
RETURNS VARCHAR(255)
ENTRY_POINT 'MyFunction'
MODULE_NAME 'myudf';
That means Firebird has to load something such as:
myudf.dll
on Windows or:
myudf.so
on Linux.
The binary also needs to match the operating system and architecture. A Windows 64-bit UDF cannot simply be copied to a Linux Firebird server.
IBExpertFunctionLibrary instead targets the newer Firebird function mechanisms, avoiding reliance on the old UDF architecture where possible.
The current library covers almost all functions available in FreeAdhocUDF and rFunc.
Some legacy functions cannot reasonably be reproduced using modern Firebird functionality. In those cases, IBExpert may provide a non-functional prototype so that existing SQL does not immediately fail because the function name is missing.
This distinction is important when migrating an application:
Function exists ≠ Function necessarily produces the old result
Functions used by business-critical SQL should therefore be tested after migration.
A practical migration would normally look like this:
1. Identify existing external functions
Inspect the old database for UDF declarations and determine which libraries they belong to.
Typical examples may come from:
FreeAdhocUDF, rFunc and custom application UDFs.
2. Determine where the functions are used
Search:
stored procedures, triggers, views, stored functions, application SQL.
3. Compare them with IBExpertFunctionLibrary
Determine whether an equivalent implementation exists.
4. Install/create the replacement functions
The exact deployment scripts are supplied with the licensed IBExpertFunctionLibrary source/package rather than being documented on the public product page.
5. Test the database
Particularly check functions involving:
Strings, dates, numeric conversion, NULL handling, character sets, BLOBs.
6. Remove the old binary UDF dependency
Once all calls have been migrated and verified, the old DLL/SO library should no longer be necessary.
A Firebird stored function behaves much more like normal SQL database code:
CREATE FUNCTION CALCULATE_VALUE (
A INTEGER,
B INTEGER
)
RETURNS INTEGER
AS
BEGIN
RETURN A + B;
END
It can then be called directly:
SELECT CALCULATE_VALUE(10, 20)
FROM RDB$DATABASE;
Result: 30
This approach has several advantages over traditional UDFs:
The two modern approaches serve slightly different purposes.
| Feature | Stored Function | UDR |
|---|---|---|
| Written in SQL/PSQL | Yes | Usually no |
| External compiled code | No | Usually yes |
| Suitable for simple logic | Excellent | Yes |
| Complex external processing | Limited | Excellent |
| Deployment complexity | Low | Higher |
| Replacement for many classic UDFs | Yes | Yes |
For functions that can be implemented using Firebird SQL/PSQL, a stored function is usually the simpler option.
A UDR is useful when functionality genuinely requires external compiled code.
Functions from different historical libraries are not always parameter-compatible, even if they perform similar operations.
For example, a legacy function equivalent to Firebird's:
SUBSTRING(...)
may use a different argument order or indexing convention.
Therefore, migration should not simply be:
old function name -> new function name
without checking parameters and return values.
A safer approach is:
Old function -> Check parameter types -> Check NULL behaviour -> Check result type ->
Compare sample results -> Replace
IBExpertFunctionLibrary is most useful when you have:
an older Firebird application + FreeAdhocUDF / rFunc / legacy UDF dependencies + a planned migration to Firebird 3, 4 or 5.
Instead of continuing to depend on old binary UDF libraries, it provides a migration path toward modern Firebird functions.
For a new Firebird 5 application, however, it generally makes more sense to use Firebird built-in functions, stored functions and UDRs directly, rather than introduce compatibility functions unless they are actually needed.
IBExpertFunctionLibrary ist eine Sammlung von Firebird-Datenbankfunktionen, die von IBExpert als moderner Ersatz für ältere UDF-Bibliotheken (FreeAdhocUDF und rFunc) entwickelt wurde.
Herkömmliche Firebird-UDFs sind externe Binärbibliotheken, die in der Regel in Sprachen wie C/C++ oder Pascal geschrieben sind. Sie wurden häufig in Verbindung mit Firebird 2.x verwendet, um Funktionen hinzuzufügen, die in SQL nicht direkt verfügbar waren.
Das Problem besteht darin, dass binäre UDFs plattformabhängig sind und zudem die Stabilität des Servers beeinträchtigen können. Eine fehlerhafte UDF kann unter Umständen zum Absturz des Firebird-Serverprozesses führen. Aus diesem Grund hat sich Firebird nach und nach von herkömmlichen UDFs verabschiedet.
Ab Firebird 3 empfiehlt Firebird neuere Mechanismen wie:
anstelle herkömmlicher binärer UDFs.
Ab Firebird 4 ist die Unterstützung für herkömmliche UDFs in der Datei firebird.conf standardmäßig deaktiviert.
Dies führt zu einem Migrationsproblem für ältere Anwendungen, die SQL-Anweisungen wie die folgenden enthalten:
SELECT some_old_udf(field1)
FROM customer;
oder:
SELECT rFuncFunction(...)
FROM orders;
Das Neuprogrammieren einer großen Anwendung und ihres gesamten Datenbankcodes kann kostspielig sein.
Die IBExpertFunctionLibrary wurde in erster Linie entwickelt, um Ersatz für diese Legacy-Funktionen zu bieten und gleichzeitig die Ausführung von Anwendungen auf modernen Firebird-Versionen zu ermöglichen.
Das wichtigste Szenario ist:
Alte Firebird 2.x-Anwendung -> verwendet FreeAdhocUDF / rFunc -> Datenbank auf Firebird 3 / 4 / 5 aktualisiert -> IBExpertFunctionLibrary bietet kompatible Ersatzfunktionen.
Dadurch lässt sich der Umfang der SQL-Anweisungen in der Anwendung, die bei einer Firebird-Migration geändert werden müssen, erheblich reduzieren.
Bei einer alten UDF verweist die Datenbankdeklaration in der Regel auf eine externe Binärbibliothek:
DECLARE EXTERNAL FUNCTION MY_FUNCTION
VARCHAR(255)
RETURNS VARCHAR(255)
ENTRY_POINT 'MyFunction'
MODULE_NAME 'myudf';
Das bedeutet, dass Firebird eine Datei wie beispielsweise
myudf.dll
unter Windows oder
myudf.so
unter Linux laden muss.
Die Binärdatei muss zudem mit dem Betriebssystem und der Architektur übereinstimmen. Eine 64-Bit-UDF für Windows kann nicht einfach auf einen Linux-Firebird-Server kopiert werden.
Die IBExpertFunctionLibrary zielt stattdessen auf die neueren Firebird-Funktionsmechanismen ab und vermeidet, sofern möglich, die Abhängigkeit von der alten UDF-Architektur.
Die aktuelle Bibliothek deckt nahezu alle in FreeAdhocUDF und rFunc verfügbaren Funktionen ab.
Einige ältere Funktionen lassen sich mit den modernen Funktionen von Firebird nicht sinnvoll nachbilden. In solchen Fällen stellt IBExpert möglicherweise einen nicht funktionsfähigen Prototyp bereit, damit bestehende SQL-Anweisungen nicht sofort fehlschlagen, weil der Funktionsname fehlt.
Diese Unterscheidung ist bei der Migration einer Anwendung wichtig:
Die Funktion existiert ≠ Die Funktion liefert zwangsläufig das alte Ergebnis
Funktionen, die in geschäftskritischen SQL-Anweisungen verwendet werden, sollten daher nach der Migration getestet werden.
Eine praktische Migration würde normalerweise wie folgt ablaufen:
1. Vorhandene externe Funktionen identifizieren
Überprüfen Sie die alte Datenbank auf UDF-Deklarationen und ermitteln Sie, zu welchen Bibliotheken diese gehören.
Typische Beispiele hierfür sind:
FreeAdhocUDF, rFunc und benutzerdefinierte Anwendungs-UDFs.
2. Ermitteln Sie, wo die Funktionen verwendet werden
Suche:
Stored Procedures, Trigger, Views, Stored Functions, Anwendungs-SQL.
3. Vergleichen Sie diese mit der IBExpertFunctionLibrary
Stellen Sie fest, ob eine entsprechende Implementierung vorhanden ist.
4. Die Ersatzfunktionen installieren/erstellen
Die genauen Deployment-Skripte sind im lizenzierten IBExpertFunctionLibrary-Quellcode bzw. -Paket enthalten und nicht auf der öffentlichen Produktseite dokumentiert.
5. Testen Sie die Datenbank
Überprüfen Sie insbesondere Funktionen in folgenden Bereichen:
Zeichenketten, Datumsangaben, numerische Konvertierung, Umgang mit NULL-Werten, Zeichensätze, BLOBs.
6. Entfernen Sie die alte binäre UDF-Abhängigkeit
Sobald alle Aufrufe migriert und überprüft wurden, sollte die alte DLL-/SO-Bibliothek nicht mehr benötigt werden.
Eine gespeicherte Firebird-Funktion verhält sich viel eher wie normaler SQL-Datenbankcode:
CREATE FUNCTION CALCULATE_VALUE (
A INTEGER,
B INTEGER
)
RETURNS INTEGER
AS
BEGIN
RETURN A + B;
END
Es kann dann direkt aufgerufen werden:
SELECT CALCULATE_VALUE(10, 20)
FROM RDB$DATABASE;
Ergebnis: 30
Dieser Ansatz bietet gegenüber herkömmlichen UDFs mehrere Vorteile:
Die beiden modernen Ansätze dienen leicht unterschiedlichen Zwecken.
| Merkmal | Stored Function | UDR |
|---|---|---|
| In SQL/PSQL geschrieben | Ja | In der Regel nein |
| Externer kompilierter Code | Nein | In der Regel ja |
| Geeignet für einfache Logik | Hervorragend | Ja |
| Komplexe externe Verarbeitung | Eingeschränkt | Hervorragend |
| Komplexität bei der Bereitstellung | Gering | Höher |
| Ersatz für viele klassische UDFs | Ja | Ja |
Bei Funktionen, die mit Firebird SQL/PSQL implementiert werden können, ist eine gespeicherte Funktion in der Regel die einfachere Option.
Eine UDR ist dann sinnvoll, wenn die Funktionalität tatsächlich externen kompilierten Code erfordert.
Funktionen aus verschiedenen älteren Bibliotheken sind nicht immer parameterkompatibel, auch wenn sie ähnliche Operationen ausführen.
Beispielsweise kann eine ältere Funktion, die der Firebird-Funktion
SUBSTRING(...)
entspricht, eine andere Argumentreihenfolge oder Indizierungskonvention verwenden.
Daher sollte die Migration nicht einfach wie folgt erfolgen:
alter Funktionsname -> neuer Funktionsname
ohne die Parameter und Rückgabewerte zu überprüfen.
Eine sichere Vorgehensweise ist:
Alte Funktion -> Parametertypen prüfen -> Verhalten bei NULL prüfen -> Ergebnistyp prüfen ->
Beispielergebnisse vergleichen -> Ersetzen
IBExpertFunctionLibrary ist in folgende Situationen besonders nützlich:
eine ältere Firebird-Anwendung + Abhängigkeiten von FreeAdhocUDF, rFunc oder älteren UDFs + eine geplante Migration auf Firebird 3, 4 oder 5.
Anstatt weiterhin auf alte binäre UDF-Bibliotheken angewiesen zu sein, bietet sie einen Migrationspfad hin zu modernen Firebird-Funktionen.
Bei einer neuen Firebird-5-Anwendung ist es jedoch in der Regel sinnvoller, die integrierten Funktionen, Stored Functions und UDRs von Firebird direkt zu verwenden, anstatt Kompatibilitätsfunktionen einzuführen, sofern diese nicht tatsächlich benötigt werden.
Make sure you always use the most up-to-date IBExpert Personal Edition. The latest IBExpert software version is available from the IBExpert Download Center.
Check whether you have requested too many free activations (see Error: too many Personal Edition registrations).
If the IBExpert Personal Edition still does not start, check your inbox for messages from our IBExpert server with advice on possible causes or problems.
After clicking “Get code” I received the following error message: Error: too many registrations for personal edition from your network…
This is not an error. If you check the IBExpert Personal Edition conditions, you will see that you have exceeded the number of legal downloads allowed for this free edition: free IBExpert Personal Edition.
Due to the vast amounts of downloads the free IBExpert Personal Edition registration procedure is fully automated. We can therefore provide neither support nor service for this software edition. Please do not write to us, or request manual activations.
By activating the IBExpert Personal Edition registration you are also agreeing to the terms stated in the Activation Code email:
1. The Personal Edition is certainly not intended for commercial use on multiple computers in a company, nor to be passed on or sold to others.
2. The Personal Edition may not be activated for other users.
3. Use of the IBExpert Personal Edition is only allowed by the person who has conducted the download from his/her account in the IBExpert Download Center.
4. A developer may use the Personal Edition commercially at his employer's (according to the terms in 3.).
Any use by any other person or any form of distribution is strictly prohibited without prior written permission and will be prosecuted.
You will need to agree to these usage terms before you enter the unlock code.
If you need or intend to use IBExpert for any other purpose than personal use, you must purchase a full IBExpert Developer Studio Edition incl. 12 month software subscription. If you only use IBExpert occasionally (for example, for customer support), the IBExpert Day Edition may be suitable for your needs.
You can view all IBExpert software and fees on our website: IBExpert products, services & prices.
Mit IBEScript lassen sich Firebird-Skripte komfortabel über die Windows-Kommandozeile automatisiert ausführen. Das eigenständige Kommandozeilen-Tool eignet sich ideal für geplante Aufgaben, Installationsroutinen, Batch-Dateien und CI/CD-Prozesse – ganz ohne grafische Benutzeroberfläche.

Die Abbildung zeigt die aktuelle Hilfeausgabe der 64-Bit-Windows-Version von IBEScript 2026.07.29.
Bereits der Aufruf von ibescr64.exe zeigt alle verfügbaren Kommandozeilenoptionen, darunter Funktionen für Protokollierung, Fehlerbehandlung, Verbindungen und Skriptverschlüsselung.
IBEScript befindet sich im IBExpert-Installationsverzeichnis und kann direkt über die Kommandozeile gestartet werden. Dadurch lassen sich wiederkehrende Aufgaben zuverlässig automatisieren, beispielsweise:
Die grundlegende Syntax:
IBEScript script_filename [options]
Beispiel:
IBEScript C:\Scripts\CreateDB.sql
IBEScript bietet zahlreiche Optionen zur Kontrolle der Skriptausführung:
Durch die integrierte IBEBlock-Technologie können auch komplexe Datenbankoperationen automatisiert durchgeführt werden.
Mögliche Einsatzbereiche:
ibec_CompareMetadataZusätzlich unterstützt IBEScript den Import und Export von Dateien in Datenbankfeldern, beispielsweise für BLOB-Daten, sowie die Verwendung von Umgebungsvariablen für flexible Installationen.
IBEScript erweitert IBExpert um eine leistungsfähige Kommandozeilen-Schnittstelle für professionelle Datenbankautomatisierung.
Von einfachen SQL-Ausführungen bis hin zu komplexen Migrationen, Datenbankvergleichen und automatisierten Reports bietet IBEScript alle Werkzeuge, um Firebird-Prozesse effizient und zuverlässig zu steuern.
IBEScript ist damit eine ideale Ergänzung für Entwickler, Administratoren und Unternehmen, die wiederkehrende Datenbankaufgaben automatisieren möchten.
Hinweis: IBEScript ist Bestandteil der IBExpert Developer Studio Edition, der IBExpert Server Tools sowie der IBExpert Company Year Editions und steht in dieser Form nicht in der kostenlosen IBExpert Personal Edition zur Verfügung.
Sie nutzen Firebird auf eigener oder bereits vorhandener Server-Hardware?

Mit unserem 3-Jahres-Servicepaket prüfen und überwachen wir die wichtigsten Grundlagen für einen stabilen Betrieb.
Zum Pauschalpreis von 1.750 € für 3 Jahre führen wir eine initiale Remote-Analyse durch, prüfen Backup- und Restore-Automatisierung, bewerten die Serverleistung per Benchmark und kontrollieren vorhandene Firebird-Konfigurationen.
Zusätzlich erfolgen vierteljährliche Basischecks per Remote-Sitzung. Sie laden uns dazu nach vorheriger E-Mail mit einer Remote-Software Ihrer Wahl ein. Über ein automatisiertes IBEBlock-Script werden regelmäßige Backups zentral protokolliert und überwacht, um Fehler frühzeitig erkennen zu können. ... weiterlesen