Zugriff per ODBC auf Lexware financial office pro/premium

Der Zugriff auf die Datenbank von Lexware financial office pro oder premium ist standardmäßig nicht möglich. Alllerdings geht es mit dem hier gezeigten Vorgehen dennoch. Konkret geschieht dies, indem wir eine ODBC-Datenquelle einrichten.

Das hier geschilderte Verfahren wurde mit Lexware financial office pro 2013 bis 2017 erfolgreich getestet.

 

Achtung
Mit Lexware financial office pro 2018 und 2019 scheint, das hier beschriebene Verfahren nicht mehr zu funktionieren. Lexware hat da anscheinend etwas geändert. Wenn jemand eine Lösung hat, dann her damit.

Achtung
Auch wenn mit dem hier beschriebenen Verfahren ein Schreibzugriff auf die Lexware-Datenbank möglich ist, sollte dies nicht geschehen, da ansonsten die Integrität der Daten im komplexen Schema gefährdet ist.

Benötige Werkzeuge

  • Sybase SQL Anywhere Database Client (http://www.sybase.de/detail?id=1087327
  • SAP SQL Anywhere 16.0 Client Software (http://scn.sap.com/docs/DOC-35857)
  • Optional: Microsoft Access, OpenOffice Base oder ähnliches

Die Client-Software SAP SQL Anywhere 16.0 muss installiert werden. Auf einem 64-Bit System müssen die ODBC-Treiber sowohl für 64-Bit als auch 32-Bit installiert werden. Nach der Installation stehen nun zwei ODBC-Datenquellen-Administrationstools, je eines für 32-Bit und 64-Bit, zur Verfügung. Außerdem haben wir nun die Administrationsoberfläche „Sybase Central“.

Schritt 1: Ermitteln des Benutzerkennworts

Auf einem System, auf dem der Lexware Client eingerichtet ist, existiert auch eine ODBC-Datenquelle namens „LXSYDSN“. Mit dieser Datenquelle können wir uns mit dem globalen Teil der Lexware-Datenbanken verbinden, nicht jedoch mit den Datenbanken für die jeweiligen Firmen/Mandanten.

  1. Sybase Central starten
  2. Mit Datenbank verbinden (Schema anzeigen und bearbeiten oder eine Datenbank warten).
    Sybase Central Startseite
  3. Im Dialog „Mit einer SQL Anywhere-Datenbank verbinden“
  4. Authentifizierung: Datenbank
    Benutzer-ID: _login_
    Kennwort: 92ab346d1c02cffc
    eingeben.
  5. Aktion: „Mit einer laufenden Datenbank auf einem anderen Computer verbinden“ auswählen
  6. Auf Suchen klicken und den Server lxdbsrv auswählen
  7. Auf Verbinden klicken
    Mit einer SQL-Anywhere-Datenbank verbinden
    Die Nachfolgende Fehlermeldung „Der angegebene Benutzer hat keine DBA-Berechtigung. Einige Funktionen sind deaktiviert“ können wir einfach wegklicken und ignorieren.
  8. Nach dem Verbindungsaufbau klicken wir im doppelt auf Tabellen
    Auswahl Tabellen
    und
  9. öffnen mit einem weiteren Doppelklick die Tabelle LXG_USER. (Tipp von Stefan: Falls wir keinen Zugriff auf die Tabelle haben, öffnen wir statt der Tabelle die Ansicht/View LXG_VIEW_USER.)
  10. Im Reiter Daten können wir nun die Daten der Tabelle einsehen.
  11. Wir notieren uns den Wert für PASSWORD des Users mit USER_ID 0 in.

Schritt 2: Erstellen der ODBC-Datenquelle

Nun haben wir alle Informationen beisammen und können die ODBC-Datenquelle anlegen. Auf einem 64-Bit-System verwenden wir dafür das Tool „ODBC-Datenquellen-Administrator (64bit)“, auf einem 32-Bit-System entsprechend „ODBC-Datenquellen-Administrator (32bit)“.

Im Reiter „Benutzer-DSN“ klicken wir auf Hinzufügen und wählen den Treiber SQL Anywhere 16 aus. Nach einem Klick auf Fertig stellen öffnet sich der Dialog „ODBC-Konfiguration für SQL Anywhere“. Ins Feld Datenquellenname auf dem Reiter „ODBC“ geben z.B. Lexware ein.
ODBC-Einrichtung

Nun wechseln wir auf den Reiter „Login“. Und füllen die Felder wie folgt aus:
  1. Authentifizierung: Datenbank
  2. Benutzer-ID: U0
  3. Kennwort: Hier gehört das im Schritt 1 ermittelte Kennwort hinein.
  4. Aktion: Eine Datenbank auf einem anderen Computer starten und …
  5. Datenbankdatei: In dieses Feld muss der Pfad zur Datenbankdatei lxcompany.db der zu öffnenden Firma eingetragen werden. Dabei ist zu beachten, dass der Pfad aus Sicht des Servers, nicht des Clients gesetzt wird. (z.B. C:\ProgramData\Lexware\professional\Datenbank\F2\lxcompany.db für den zweiten Mandanten/die zweite Firma im System).
  6. Chiffrierschlüssel:
  7. Datenbankname: Analog zum Eintrag im Feld Datenbankdatei, ist hier die entsprechende Datenbank, also F1, F2, Fx einzutragen.
  8. Servername: LXDBSRV
  9. Host: DNS-Name oder IP-Adresse des Datenbankrechners im Netz
  10. Port: oder 2638

ODBC-Login-Daten

Auf dem Reiter „ODBC“ kann man nun die Verbindung testen. Ist der Test erfolgreich, schließen wir das Fenster mit OK. Uns steht nun eine neue ODBC-Datenquelle zur Verfügung, auf die wir mit Tools wie Microsoft Access, Excel, OpenOffice Base oder eigenen Programmen zugreifen können.Übersicht ODBC-Datenquellen

64 Gedanken zu „Zugriff per ODBC auf Lexware financial office pro/premium

  1. Für mich funkionierte der Vorschlag von Markus Schnitzer. Nur verstehe ich nicht warum es auf die Anzeige im Frontend keine Auswirkung hat. Ich bin mir aber nun sicher, daß es bei mir einen klaren Fehler in Lexware gibt. Es gibt ein Feld bIstTesfirma und das steht bei mir auf 0 und trotzdem wurde mir am Telefon erzählt ich hätte eine Testfirma angelgt. Das ist offensichtlich nicht wahr!

  2. Heute mit Lexware Premium 2020 Version 20.07
    auf Windows 10 Pro (x64) mit LibreOffice Base 7.1.0.3 (x86) als 32bit ODBC Verbindung hergestellt.

  3. Bei Lexware-Versionen größer 2020 kann das Datenbankpasswort für den Supervisor Benutzer wie folgt ausfindig gemacht werden.

    1. Die Datei LexGlob.log suchen

    2. Diese Datei durchsuchen nach „Supervisor“. Fast am Ende.

    3. unmittelbar nach dem Benutzernamen erscheint eine Zeichenfolge, mit dieser kann eine Verbindung per ODBC oder SQL Anywhere als Benutzer U0 aufgebaut werden.

  4. Hallo,
    danke für die Anleitung. Habe auf die Weise versucht ein verlorenes Supervisor Passwort bei Reisekosten Plus 2020 zu löschen. Ich kann mich danach auch mit dem Supervisor anmelden, aber sobald ich einen Mandanten auswähle, kommt der Fehler „Fehler beim Login in die Datenbank DSN: Ungültige Einlogparameter angelegt“. Klickt man das weg, kommt irgendwann eine Exception mit dem Code FM00020166

    Code: 0xfffffbce – Unknown error 0xFFFFFBCE
    Fehler bei ILXBaseCollectionImpl::put_Database
    Es trat ein Fehler bei Open auf mit dem Statement
    SELECT * FROM LXG_FIRMA WHERE nStatus = 0
    Login-Modus ‚Integrated‘ bei dieser login_mode-Einstellung nicht zulässig
    State:28000,Native:-1074,Origin:[SAP][ODBC Driver][SQL Anywhere]

    vielleicht hat jemand einen Tipp?

  5. Moin moin,
    also zuersteinmal: Super tolle Anleitung!!
    Also bei mir läuft das ganze noch so.
    Es muss jetzt nur IMMER Lexware parallel geöffnet sein, damit der ODBC Zugriff auf die DB erfolgt.
    Und das Passwort ist nun verschlüsselt abgelegt.
    Man muss nur den neueren SQL Anywhere Cleint verwenden.
    https://wiki.scn.sap.com/wiki/display/SQLANY/SAP+SQL+Anywhere+Database+Client+Download
    SAP SQL Anywhere 17.0 für Lexware 2019
    http://d5d4ifzqzkhwt.cloudfront.net/sqla17client/SQLA17_Windows_Client.exe

    LG

    Carsten Koster

  6. Das Ganze scheint nicht mehr zu funktionieren. Ich werde das mal entsprechend im Artikel vermerken. Wenn jemand eine Idee hat, wie man wieder an die DB herankommt, dann her damit.

  7. Hallo,
    ich bekommen immer den Fehler „Verbindung fehlgeschlagen: Ungültige Benutzer-ID bzw. ungültiges Kennwort“ beim Testen der Verbindung.
    Lexware Premium Version 19.51
    Server: 2008R2
    Client: Win7 x64
    Muss das Kennwort als Hash oder als Klartext eingetragen werden.
    Muss das Kennwort kodiert werden?
    Danke

  8. Es gibt die Möglichkeit, auf die DB huckepack wenn Lexware läuft zuzugreifen. Allerdings benötigt man dazu den Hash des Lexware User-Passworts.
    Ich mach das ganze über die OLE Treiber + C# für meine Tools. Funktioniert tadellos. Einzige Umstellung die ich für 2018 machen musste, war die aktuelleren sybase Treiber zu referenzieren.

  9. Hallo zusammen,
    ich bin ebenfalls auf der Suche wie ich den Hash aus der Tabelle LXG_USER richtig verwende. Das Passwort der der USER_ID 0 ist mir im Klartext bekannt. Beim Testen der ODBC Schnittstelle bekomme ich den Fehler
    „Verbindung Fehlgeschlagen: Ungültige Benutzer-ID bzw. ungültiges Kennwort“
    Ansonsten gute Anleitung.

  10. Hi Leute, also ich habe ich das Thema „Passwort seit 2018“ intensiv angeschaut, das seltsame ist, dass mein beim Kunden eingerichteten Zugriff und Link der Kunden und Lieferanten OPs in der SQL-Server über ODBC immer noch mit dem Passwort funktioniert und eine neue Installation bei einem anderen Kunden mit dem Blank-Passwort auf mit der 2018-Version super gut läuft, also werde ich das gleiche Passwort für die Supervisor so bei dem neuen Kunden setzen. aber das entscheidende ist, dass mein ODBC-Zugriff ohne Lexware direkt auf die DB geht und ich nicht finde, wer/wie das pw ver-/entschlüsselt. ich meine, das ist eine Einstellung in der DB o.ä.
    ich habe die alte Db von Anfang 2018 auf das lfd.System kopiert und kann dort die „unverschlüsselten“ (also nummerisch) über die Database-select sehen. aber ich sehe keine Attribute, was das pw in der neuen DB verschlüsselt anzeigt. wer möchte kann gerne eine Mailadresse über den Blog erfragen, mit jetzt 41 Jahren Programmierung und immer noch gut dabei 🙂

  11. Hi, gute Kommentare, ich habe mich gewundert, warum ich bei einer neuen Lexware-Installation die Passworte nicht mehr lesen kann, dito bei der aktuellen. aber der _login_ und die bestehenden Passworte sind immer noch korrekt, also das Lexware Supervisor-Passwort auch bei der neuen Installation benutzen. Als Software-Entwickler hatte ich mich schon über die Passwort-Sicherheit gewundert. hoffentlich bleibt es so wie es heute ist 🙂

  12. Gibt es auch eine Lösung für 2012? Sybase gibt immer die Meldung, dass Version 9 nicht unterstützt wird.

  13. Hi hat das jemand schon mit 2018 hinbekommen ? Bei mir sieht der hasch seit 2018 ganz komisch aus und funktioniert auch nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.