mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 20:43:02 +01:00
104 lines
3.4 KiB
Plaintext
104 lines
3.4 KiB
Plaintext
-----------------------------------------------------------
|
|
Firebird 3.0 Embedded Server notes
|
|
-----------------------------------------------------------
|
|
|
|
1. GENERIC INFORMATION
|
|
|
|
The embedded server is a fully functional server linked
|
|
as a dynamic library (fbembed.dll). It has exactly the
|
|
same features as the usual server and exports the
|
|
standard Firebird API entrypoints.
|
|
|
|
2. ISSUES AND LIMITATIONS
|
|
|
|
2.1. Registry
|
|
|
|
The Firebird registry entries are ignored. The root
|
|
directory of the embedded server is the directory of
|
|
its binary file (library).
|
|
|
|
2.2. Database access
|
|
|
|
Client access can be only via the local protocol,
|
|
i.e. NOT a TCP/IP connection string that includes
|
|
the server name "localhost" or IP address 127.0.0.1.
|
|
|
|
The embedded server supports only the local connection
|
|
to a database file path without a server name.
|
|
|
|
The database file can be accessed by multiple client
|
|
programs. The database consistency in this case is
|
|
guaranteed internally (by the shared lock table).
|
|
|
|
The embedded server acts as a true local server for a single
|
|
client accessing databases on a local machine. It can also
|
|
act as a remote gateway that redirects all network calls to
|
|
other hosts, just as the regular client library does.
|
|
|
|
2.3. Authentication and security
|
|
|
|
The security database (namely security2.fdb) is not used
|
|
in the embedded server and hence is not required. Any
|
|
user is able to attach to any database. Since both
|
|
the server and the client run in the same address space,
|
|
the security becomes just an agreement between both
|
|
sides which can be easily compromised.
|
|
|
|
But note that SQL privileges are still checked.
|
|
|
|
2.4. Compatibility
|
|
|
|
You may run any number of applications with the embedded
|
|
server without any conflicts. Having IB/FB server running
|
|
is not a problem either.
|
|
|
|
3. USAGE
|
|
|
|
Just copy fbembed.dll, icudt30.dll, icuin30.dll and
|
|
icuuc30.dll into the directory with your application.
|
|
Then rename fbembed.dll to either fbclient.dll or
|
|
gds32.dll depending on your database connectivity software.
|
|
Then start your application and it will use the embedded
|
|
server as a client library and will be able to access
|
|
local datasases. You should also copy firebird.msg and
|
|
firebird.conf (if necessary) to the same directory.
|
|
|
|
If external libraries are required for your application,
|
|
then you should have them separately. Most probably, it
|
|
will be INTL support (fbintl.dll and fbintl.conf) or UDF
|
|
libraries. To be able to use them, you should place them
|
|
into the directory tree which emulates the Firebird server
|
|
one, i.e. has subdirectories like /intl or /udf:
|
|
|
|
c:\my_app\app.exe
|
|
c:\my_app\gds32.dll
|
|
c:\my_app\ib_util.dll
|
|
c:\my_app\icudt30.dll
|
|
c:\my_app\icuin30.dll
|
|
c:\my_app\icuuc30.dll
|
|
c:\my_app\firebird.conf
|
|
c:\my_app\firebird.msg
|
|
c:\my_app\intl\fbintl.dll
|
|
c:\my_app\intl\fbintl.conf
|
|
c:\my_app\udf\fbudf.dll
|
|
|
|
If you want to place the Firebird files (excluding the
|
|
renamed fbembed.dll) in another directory, you need to
|
|
modify your firebird.conf and set RootDirectory to the
|
|
Firebird directory tree. Example:
|
|
|
|
c:\my_app\app.exe
|
|
c:\my_app\gds32.dll
|
|
c:\my_app\ib_util.dll
|
|
c:\my_app\icudt30.dll
|
|
c:\my_app\icuin30.dll
|
|
c:\my_app\icuuc30.dll
|
|
c:\my_app\firebird.conf
|
|
d:\fb\firebird.msg
|
|
d:\fb\intl\fbintl.dll
|
|
c:\fb\intl\fbintl.conf
|
|
d:\fb\udf\fbudf.dll
|
|
|
|
firebird.conf:
|
|
RootDirectory = d:\fb
|