firebirdfirebird-embedded

Is Firebird database file compatible to Firebird Embedded database


Is it possible to open a Firebird database file also with a Firebird Embedded of the same Firebird version? Sure, I am aware I can't keep the same file open via FB Embedded and FB at the same time. But after closing the Firebird connection it should be possible to connect with FB Embedded, right? Are there any restrictions when connecting over FB Embedded. My question concerns Firebird Version 3.0 or higher.

I expect that this is possible without any restriction.


Solution

  • The Firebird Embedded library uses the exact same database engine as the full blown Firebird server (plugins\engine12.dll in the case of Firebird 3.0). The difference is that a Firebird server accepts remote connections over TCP/IP (and NetBEUI), and - on Windows - connections from other processes using XNET and uses authentication, while Firebird Embedded is an in-process database engine which can only be used from within that process, and relies only on filesystem permissions to decide if you're allowed to open a database.

    In other words, it uses the exact same database file format.

    As an aside, it is possible to use a Firebird server and Firebird Embedded together on the same database concurrently, if ServerMode is configured appropriately in the firebird.conf of both (to SuperClassic/ThreadedShared or Classic/MultiProcess), and both use the same lock-directory (which would be the default situation).

    A Firebird 3.0 server can only open databases with On-Disk Structure (ODS) 12.x, while Firebird 4.0 can - by default - only open databases with ODS 13.0. It is possible to include the engine12.dll of Firebird 3.0 in Firebird 4.0, and configure Firebird 4.0 to open a Firebird 3.0 database with that specific plugin.