Programmierung

Verwendung von DbaConnect()

Eine Verbindung zu einer zweiten oder dritten Datenbank kann in ganz unterschiedlichen Anwendungsszenarien erforderlich sein. Sei es eine Datenbank zur Archivierung von Altdaten oder der direkte Zugriff auf eine andere Applikation, beim Einsatz der Funktion DbaConnect() gibt es einige Dinge zu beachten.


Aktuell erlaubt DbaConnect() die gleichzeitige Verbindung mit maximal 7 Datenbanken. Auch eine zweite Verbindung in dieselbe Datenbank ist dabei zulässig.

Lizenz
Sofern ein anderer Datenbankserver angesprochen werden soll, muss er über eine ausreichende Lizenz verfügen. Beispielsweise benötigt ein Client 5.6 auch auf dem Zielserver eine 5.6-fähige Lizenz, andernfalls liefert DbaConnect() den Fehlercode -1995.

Datenbankserver
Aktuell kann jeder Datenbankserver der Version 5.x. verwendet werden. Dies kann bei zukünftigen Versionen allerdings anders sein, ein Client 5.6.07 könnte dann durchaus einen Server gleichen Releasestands benötigen. Unabhänigig von der verwendeten Client-Version ist es in jedem Fall sinnvoll, auf allen Systemen die aktuellste Release des Servers einzusetzen.

Datenbankversion
DbaConnect() erlaubt auch den Zugriff auf Datenbanken älterer Versionen. Aktuell werden folgende Stände unterstützt: 3.7, 3.8, 3.9, 4.7, 5.0 bis 5.6. Auch hier kann es bei zukünftigen Versionen eventuell zu weiteren Einschränkungen kommen. So muss DbaConnect() beispielsweise weiterhin das alte Benutzersystem unterstützen, das bis zur 5.2 verwendet wurde.

Rechte
Häufiges Problem beim Datenbankzugriff sind die Rechte des verwendeten Benutzers. Insbesondere das Recht "Externer Zugriff" in den Programmrechten der Benutzergruppe muss aktiv sein, ansonsten ist keine Verbindung mit der Datenbank möglich.

4 Kommentare

4 Kommentare “Verwendung von DbaConnect()”

  1. Ob eine DbaConnect()-Verbindung beim Programmstart aufgebaut wurde, kann beispielsweise durch eine globale Variable festgehalten werden.

    Einen darüberhinausgehenden "Verbindungsstatus" gibt es nicht (genauso wie bei anderen TCP/IP-Verbindungen), da es nur eine rein logische Verbindung ist. Ein I/O-Fehler auf der Verbindung (z.B. bei RecRead) führt zum Abbruch des Clients.

    Ein reiner Test der Verbindung (ohne evtl. Client-Abbruch) wäre per DbaInfo() zwar denkbar, allerdings könnte dies zu einer längeren Wartezeit führen, wenn auf einen Verbindungstimeout gewartet werden muss.

  2. Gibt es eine Möglichkeit den "Verbindungsstatus" einer DBAConnect-Verbindung zu prüfen ?
    (Verbindungs-Aufbau bei Programmstart, damit nicht permanent oder an X Stelllen die Verbindung auf- und abgebaut werden muß)

Kommentar abgeben