with FB 2 on Windows it is easier
there is "lean" fbclient.dll (about 800 KB) which only contains "wire
protocol" parser/router (and utilities, like error messages, etc).
there is "fat" fbembed.dll which contains both protocol routing AND
engines for several formats (ODS versions) of database files, starting
with ODS 9 aka Interbase 5 of 1990-s
fbembed.dll can be renamed into fbclient.dll, API-wise they are the same.
the connection string application passes to the FB client can include
TCP/IP marker, or Windows network marker (obsolete, almost
non-supported), or can be local.
the connection string might also have "alias" - an abstract name for a
database enlisted in aliases.conf, but i am not sure where
aliases.conf file should reside with fb-embedded.
fbembed engine, when given a local connection string, should try to
open the DB file on their own, then if failed - should find a
stand-alone FB engine and proxy the request to it.
in your case another application already made an embedded connection it seems
I heard that FB 2.5 embedded (based on "classic server") can, if
proper bells and whistles were used, make shared DB file access. Apart
from FB 2.0/2.1 embedded, bases upon "SuperServer"
http://www.firebird.1100200.n4.nabble.com/Shared-database-access-with-FB-2-5-embedded-with-Windows-service-app-td4304872.html
https://stackoverflow.com/questions/47748342/how-to-setup-embedded-firebird-and-access-from-java-application
I would not consider that reliable or safe, IMHO one better have a
specifically installed and running Firebird Server process, so if the
user application crashes it would not damage the file by writing
memory garbage or by failing to write memory cache, as it might do
with embedded servers.
However, FB-embedded does not use ayny user authentication and SQL
rights checking, standalone FB does.
So mere "external surgery" swapping "lean" fbclient instead of "fat"
fbembed dll might not work.
I would first consult with the first app maker if you can reconfigure
it properly to use a standalone FB server by design.
If that is not feasible, then reverse-engineering that black box
application and breaking out incompatibilities with s-a FB might be
required.
As a last resort you always can make a drop-in replacement for
fbclient/fbembed dll which would log all the application requests and
then proxy them to the renamed real DLL.
Then you would parse the log and extract the data you need.
People were doing that before TraceAPI was implemented in FB 2.5 to
have a tool to peep inside real SQL exchanges underneath layers of
application libraries.
> I have zero control over the writing process as it is a black box
Sounds like some story i somewhere (stackoverflow?) already heard few
months ago.
вт, 8 сент. 2020 г. в 14:41, Arun J <
mail...@gmail.com>:
> To view this discussion on the web visit
https://groups.google.com/d/msgid/firebird-java/CA%2B7f3%3DfAzppK6%2BEbQudOx4BsGxAfQwKYio%2BpzauLEa%3D5nKAjUA%40mail.gmail.com.