ODBC-Schnittstelle für meine Buchhaltungssoftware einrichten

Forum für Fragen rund um die Installation, Konfiguration und Inbetriebnahme von Firebird.

Moderator: martin.koeditz

Antworten
Eisenbart
Beiträge: 2
Registriert: Do 13. Jan 2022, 20:54

Hallo alle zusammen!

Ich beschäftige mich erst seit kurzer Zeit mit Datenbanken im Allgemeinen und Firebird im Besonderen, bin also ein absoluter Neuling auf diesem Gebiet. Da ich mich aber wegen eines ganz bestimmten Problems an Euch wende, erstelle ich diesen Beitrag dennoch nicht im Anfängerbereich. Hoffentlich ist das in Ordnung, andernfalls bitte ich darum, diesen Thread entsprechend zu verschieben.

Also erst mal zur Ausgangssituation: Meine Buchhaltungssoftware läuft unter Firebird 2.5.7 (zumindest steht das in der Datei "Readme.txt" im Installationsordner des Servers) auf einem Rechner mit Windows 10 (64 Bit) Version 21H2. Bei der Buchhaltungssoftware handelt es sich um eine 32-Bit-Anwendung und das Gleiche gilt wohl für den Firebird-Server. Nun möchte ich auf die zugehörige Datenbank über eine ODBC-Schnittstelle zugreifen, damit ich genauere Auswertungen vornehmen kann, als es die Buchhaltungssoftware selbst ermöglicht. Das Problem ist nur, dass der Hersteller dies nicht offiziell unterstützt. Diesbezügliche Anfragen wurden bereits zurückgewiesen.

Aus diesem Grund suche ich jetzt nach einer Möglichkeit, dies auf eigene Faust zu bewerkstelligen. Leider sind allerdings sämtliche meiner bisherigen Versuche gescheitert, weswegen ich mich schließlich an Euch wende. Die Datenbank liegt auf meiner Festplatte gewissermaßen "vor meiner Nase" und über die Buchhaltungssoftware ist der Zugriff darauf problemlos möglich, also sollte ich doch auch eine ODBC-Schnittstelle dafür einrichten können?

Bisher wollte ich über den ODBC-Datenquellen-Administrator eine ODBC-System-DSN hinzufügen und musste dabei erst mal feststellen, dass dort kein ODBC-Treiber für Firebird aufgelistet wird. Auch unter "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\ODBC Drivers", wo die 32-Bit-Treiber auf 64-Bit-Systemen normalerweise eingetragen sind, wurde ich nicht fündig. Offensichtlich läuft der Firebird-Server meiner Buchhaltungssoftware auch ziemlich "unter der Hand", die entsprechenden Hintergrundprozesse im Taskmanager haben jedenfalls den Namen des Herstellers am Ende. Auch der Installationsordner des Firefox-Servers ist anders benannt als üblich. Auf gewisse Weise macht das sogar Sinn, da so wenigstens nichts durcheinanderkommt, wenn jemand mal eine "echte" Firefox-Installation auf dem gleichen Rechner vornimmt. Gleichzeitig erschwert es mir aber natürlich auch den Zugriff auf die Datenbank meiner Buchhaltungssoftware.

Also habe ich gezwungenermaßen selbst einen ODBC-Treiber für Firebird installiert und konnte diesen dann auch im ODBC-Datenquellen-Administrator auswählen. In der darauffolgenden Eingabemaske habe ich dann als Datenbank den direkten Pfad zur entsprechenden FDB-Datei angegeben. Als Client habe ich dann eine von den drei "fbclient.dll" gewählt, die in verschiedenen Unterordnern meiner Buchhaltungssoftware installiert sind. Gescheitert bin ich aber dann wohl letztendlich an der Authentifizierung, denn beim Testen der Verbindung bekam ich immer die Meldung "Your user name and password are not defined". Dabei habe ich alle Benutzernamen und Passwörter ausprobiert, die mir bekannt sind. Zum Beispiel befindet sich in einer INI-Datei für meine Buchhaltungssoftware der folgende Eintrag:

Code: Alles auswählen

// ------------------------------------------------------------------
// Standard Database and standard User
// ------------------------------------------------------------------
[Autologin]
Username=OPERATOR
Userpassword=uIDSgR4K6LQ=
DB=1
Allerdings bin ich damit auch nicht weitergekommen als mit vielen anderen vermeintlichen Benutzernamen und Passwörtern. Als Anfänger verstehe ich auch nicht so richtig, wie die Authentifizierung bei Firebird genau abläuft. Woher weiß der ODBC-Datenquellen-Administrator zum Beispiel, wo die entsprechenden Informationen gespeichert sind? Der Firefox-Server meiner Buchhaltungssoftware enthält auch eine Datei "security2.fdb", sind die Benutzernamen und Passwörter dort gespeichert? Und wenn ja, wie wird der Bezug zwischen der FDB-Datei und der Sicherheitsdatenbank hergestellt? Im Moment bin ich ziemlich mit meinem Latein am Ende und hoffe, dass einer von Euch eine Idee hat, wie ich das mit der ODBC-Schnittstelle doch noch hinbekomme. Vielen Dank schon mal im Voraus für Eure Hilfe!
bfuerchau
Beiträge: 289
Registriert: Mo 7. Mai 2018, 18:09

Da wirst du auch keine weitere Chance haben, wenn der Anbieter sich weigert.
Der Firebird-Server läuft da u.U. als "Embedded" und was User/Kennwort angeht, so kann man die ja nun mittlerweile in die DB legen, so dass eben von außen kein Zugriff mehr möglich ist.
Ich kann mir nun auch ebenso vorstellen, dass der Hersteller nun seine Datenstrukturen vor Veränderungen schützen muss, damit seine Software stabil bleibt.

Ggf. unterstützt deine Software ja auch CSV-Exporte deiner Buchungsjournale, so dass du diese wieder in Excel/Power-BI Desktop o.ä. auswwerten kannst.
Immerhin bist du ja Eigentümer/Besitzer deiner Daten und hast zumindest das Recht, diese auch zu exportieren und anderweitig zu verwenden.
vr2
Beiträge: 120
Registriert: Fr 13. Apr 2018, 00:13

Hallo Eisenbart,

als erstes lösch bitte mal die Zugangsdaten aus deinem Posting ;-)

Die fbclient.dll muss *bitmäßig, 32- oder 64-Bit* zum Client passen, nicht zum Server, denn sie läuft im Kontext des Clients. In dem Fall ist der Firebird-ODBC-Treiber bzw der jeweilige Windows-ODBC-Manager Dein Client.
Die *Version* der fbclient.dll kriegst Du raus, wenn Du im Dateimanager mit der Maus über die DLL fährst oder übers Kontextmenu der DLL, Eigenschaften/Details. Damit hast Du zwar die exakte Version, aber nicht die Bittigkeit. Die kannst Du bspw mit 7zip ermitteln, wenn es anders nicht ersichtlich ist, auf der Konsole mit

Code: Alles auswählen

7z l <Pfad+Name der DLL oder der exe>
Das Zeichen hinter 7z ist ein kleines L

So kannst Du auch ermitteln, ob Dein Firebirdserver (bei 2.5 fbserver.exe oder fb_inet_server.exe, evtl heißt er auch ganz anders) 32-Bit oder 64-Bit ist.
Angenommen, Du hast eine 2.5.7er fbclient.dll und Dein Server passt dazu:

Hast Du versucht, Dich im ODBC-Treiber als sysdba anzumelden?

Statt ODBC kannst Du Dir auch ein DB-Admintool runterladen, gut und frei verfügbar ist Flamerobin https://github.com/mariuz/flamerobin/re ... ag/0.9.3.6
Das gibt es in 32 (... setup.exe) und 64-Bit (...setup_x64.exe), ist der jeweilige Installer. Wenn Du das auf dem Rechner installierst, kannst Du etwas besser testen, ob Du an die DB rankommst, als mit ODBC.

Du hast weiterhin die Möglichkeit, auf einem anderen Rechner (oder auch auf dem selben, aber das würde ich als Anfänger nicht machen) einen regulären 2.5.9er Firebird-Server zu installieren, zb ein Win32-Paket von hier: https://firebirdsql.org/en/firebird-2-5/, das geht in 5 Minuten, und dann hat sysdba das Standardpasswort. Deine fdb kopierst Du auf diesen Rechner und machst sie dem Firebirdserver in der aliases.conf bekannt, einfach einen Alias plus Pfad eintragen, unter dem Du die Datenbank ansprechen willst. Dann kannst Du mit Flamerobin testen, ob Du zur DB connecten kannst. Und falls ja, Dir einen Überblick über die Tabellen für die Auswertung verschaffen

Grüße, vr2
Eisenbart
Beiträge: 2
Registriert: Do 13. Jan 2022, 20:54

bfuerchau hat geschrieben: Fr 14. Jan 2022, 09:53 Ich kann mir nun auch ebenso vorstellen, dass der Hersteller nun seine Datenstrukturen vor Veränderungen schützen muss, damit seine Software stabil bleibt.
Auch ich habe großes Interesse an der Stabilität meiner Buchhaltung! ;) Aus diesem Grund möchte ich auch einen reinen Lesezugriff einrichten, falls das irgendwie geht? Momentan wäre ich aber schon froh, wenn ich überhaupt irgendeinen Zugriff hätte... :roll:
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 [...] als erstes lösch bitte mal die Zugangsdaten aus deinem Posting ;-)
Diese Zugangsdaten sind aus irgendeinem Grund schon hinlänglich im Internet bekannt, scheint bei jedem Kunden meiner Buchhaltungssoftware der gleiche Benutzername und das gleiche Passwort zu sein.
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 Die *Version* der fbclient.dll kriegst Du raus, wenn Du im Dateimanager mit der Maus über die DLL fährst oder übers Kontextmenu der DLL, Eigenschaften/Details. Damit hast Du zwar die exakte Version, aber nicht die Bittigkeit.
Die fbclient.dll gibt es auf meinem Rechner an drei verschiedenen Orten:

Code: Alles auswählen

[Version 2.5.7.27050 | 32 Bit |  536 KB] C:\Program Files (x86)\Buhl\Firebird-Server MB\bin\fbclient.dll
[Version 2.5.7.27050 | 32 Bit | 3,66 MB] C:\Program Files (x86)\Buhl\Mein Büro\fbclient.dll
[Version 2.5.7.27050 | 64 Bit | 5,40 MB] C:\Program Files (x86)\Buhl\Mein Büro\OutlookSync\x64\fbclient.dll
Die Bitigkeit habe ich jeweils mit dumpbin herausgefunden. Was mich dabei ein wenig stutzig macht, ist der Größenunterschied der beiden 32-Bit-Versionen bei gleicher Versionsnummer.
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 So kannst Du auch ermitteln, ob Dein Firebirdserver (bei 2.5 fbserver.exe oder fb_inet_server.exe, evtl heißt er auch ganz anders) 32-Bit oder 64-Bit ist.
Unter "C:\Program Files (x86)\Buhl\Firebird-Server MB\bin\" habe ich eine "fb_inet_server.exe" mit der Versionsnummer 2.5.7.27050, passend zu den oben genannten DLLs. Laut dumpbin handelt es sich dabei um eine 32-Bit-Anwendung.
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 Hast Du versucht, Dich im ODBC-Treiber als sysdba anzumelden?
Ich glaube schon, aber ich bin mir nicht mehr so ganz sicher. Inzwischen habe ich erst mal so ziemlich alles in Richtung Firebird und ODBC-Treiber wieder von meinem Rechner entfernt und möchte erst mal Euch bezüglich der weiteren Vorgehensweise um Rat fragen, bevor ich noch mal alles wild durcheinander installiere.
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 Statt ODBC kannst Du Dir auch ein DB-Admintool runterladen, gut und frei verfügbar ist Flamerobin https://github.com/mariuz/flamerobin/re ... ag/0.9.3.6
Das gibt es in 32 (... setup.exe) und 64-Bit (...setup_x64.exe), ist der jeweilige Installer. Wenn Du das auf dem Rechner installierst, kannst Du etwas besser testen, ob Du an die DB rankommst, als mit ODBC.
Ich bin mit RazorSQL irgendwie reingekommen, d.h. ich habe die Tabellenstruktur gesehen, allerdings konnte ich keine Daten anzeigen. Sobald ich das versucht habe, kam eine Fehlermeldung hinsichtlich fehlender Zugriffsrechte. Auch dabei habe ich natürlich alle möglichen Zugangsdaten probiert. Ein Freund von mir hat mich auf die Idee gebracht, die Kommunikation zwischen meiner Buchhaltungssoftware und der angebundenen Datenbank mit Wireshark abzuhören und so die gesuchte Kombination aus Benutzername und Passwort herauszufinden. Natürlich ist das ein bizarrer Gedanke, mich so gewissermaßen selbst zu "hacken", aber hätte das Aussicht auf Erfolg? Ich will ja wie gesagt auch nichts an meiner Datenbank verändern.
vr2 hat geschrieben: Mo 17. Jan 2022, 01:21 Du hast weiterhin die Möglichkeit, auf einem anderen Rechner (oder auch auf dem selben, aber das würde ich als Anfänger nicht machen) einen regulären 2.5.9er Firebird-Server zu installieren, zb ein Win32-Paket von hier: https://firebirdsql.org/en/firebird-2-5/, das geht in 5 Minuten, und dann hat sysdba das Standardpasswort. Deine fdb kopierst Du auf diesen Rechner und machst sie dem Firebirdserver in der aliases.conf bekannt, einfach einen Alias plus Pfad eintragen, unter dem Du die Datenbank ansprechen willst.
Klingt interessant! 8-) Ich hatte ja schon mal die neueste Version des Firebird-Servers mitsamt ODBC-Treiber auf meinem Rechner laufen, aber wie gesagt wieder alles deinstalliert. Noch mal möchte ich das tatsächlich nicht auf meinem Rechner laufen lassen, ohne genau zu wissen, was ich tue. Aber ich habe einige virtuelle Maschinen in der VirtualBox laufen, mit denen könnte ich mal entsprechende "Experimente" durchführen. Aber sollte ich dabei nicht einfach die neueste Version des Firebird-Servers installieren? Ist die Version 2.5.9 nicht schon etwas älter? Und das mit der "aliases.conf" muss ich mir auch mal ansehen, meine Buchhaltungssoftware scheint solche Einträge auch zu verwenden. Die Einträge darin verweisen jedenfalls direkt auf die entsprechenden FDB-Dateien.
bfuerchau
Beiträge: 289
Registriert: Mo 7. Mai 2018, 18:09

Welche 2.5er Version du benutzt ist letztlich egal.
Wichtig ist, dass du dir eine komplett eigene Umgebung aufbaust.
Die Bitness ist für den Zugriff des FB-Servers letztlich egal.
Statt FlameRobin bietet sich auch die kostenlose Java-Version RedExpert an.
Nach einer wirklich kostenlosen Registrierung kannst du die Software runterladen. Auf jeden Fall besser als FlameRobin, da RedExpert alles für Firebird mitbringt.

Wenn du eine eigene 2.5er Umgebung hast, kopiere auch die DB da hinein.
Bei 2.5 kannst du noch keine User/Kennworte in der DB speichern, so dass du dann wieder SYSDBA nehmen kannst. Der FB-Server hat da dann seine eigene Security-DB.

Eine parallele Installation auf dem Hauptrechner geht i.Ü. auch.
Wichtig ist, dass du in der Firebird.Conf dann den Port änderst.
Dann kann man auch mehrere Instanzen und Versionen in verschiedenen Verzeichnissen installieren, sogar unterschiedliche Dienste (Statt Default Instance).
Antworten