Arbeiten mit dbase und/oder dem ADS

In einigen Projekten kommt es immer wieder vor, dass bestimmte Daten aus dbase Dateien kommen. Glücklicher kann sich der schätzen, bei dem zumindest ein ADS (Advantage Database Server) auf den dbase Dateien sitzt.
Im folgenden habe ich ein paar Anmerkungen für den Zugriff auf dbase Daten und auf den ADS zusammengestellt.

Der Zurgiff auf dbase Dateien funktioniert über den Standard Microsoft Jet 4.0 OLE DB Provider eigentlich relativ Problemlos. Problematisch erscheint immer der Zugriff auf Memo Felder, da diese in extra FPT-Dateien ausgelagert werden.

image

Wer dringend Zugriff auf Memo-Felder benötigt, dem sei der Microsoft OLE DB Provider for Visual FoxPro 9.0 empfohlen.

Eine andere und wesentlich performantere Alternative ist der Zugriff auf dbase Dateien über den angesprochenen ADS von Sybase. Wer noch keinen ADS im Einsatz hat, der kann sich bei Sybase eine 30-Tage Trial Version herunter laden. Ab und zu haut Sybase auch kostenlose Entwickler Lizenzen für kleine Teams raus, Nachfragen könnte sich lohnen.

Um mit den Integration Services auf den ADS zuzugreifen, müssen die entsprechenden Data Provider installiert sein, welche man ebenfalls auf der Download Seite erhalten kann. Der Zugriff auf die dbase Dateien erfolgt entweder über eine "free connection" oder eine "database connection". Die "free connection" wird normalerweise verwendet, wenn der ADS als Datenbank eine Sammlung von mit dbase Dateien gefüllten Verzeichnissen verwendet, für die "database connection" wird ein ADD-File (Advantage Data Dictionary) vorausgesetzt, welches dem ADS ermöglicht mehr Funktionen innerhalb der Datenbank zur Verfügung zu stellen.

Für den Zugriff müssen allerdings noch ein paar zusätzliche Punkte beachtet werden, da man sich sonst unter Umständen den Zugriff auf seine Live Datenbank blockiert.

 

image image

Die für den Zugriff geänderten Standardwerte innerhalb des Verbindungs-Managers sind im Bild fett hervorgehoben.
Wenn man sich über den UNC Pfad mit dem Server verbindet, muss darauf geachtet werden, dass der Advantage OLE DB Provider keine IP-Adressen im UNC Pfad zu lässt.

Die wichtigsten Einstellungen sind:

Advantage Character Data Type ADS_OEM
Advantage Locking Mode ADS_COMPATIBLE_LOCKING
Advantage Server Type ADS_REMOTE_SERVER
Advantage Table Type ADS_CDX
Show Deleted Records in DBF Tables with Advantage TRUE

Um auf FoxPro kompatible Dateien zuzugreifen, ist die Einstellunge ADS_CDX für den Parameter Advantage Table Type notwendig. Nur diese Einstellung erlaubt es auch, die gelöschten Datensätze anzuzeigen (Show Deleted Records in DBF Tables with Advantage).

Als sehr wichtigen Parameter für den Zugriff hat sich der Advantage Locking Mode herausgestellt. Standardmäßig verwendet der Treiber den Zugriff ADS_PROPRIETARY_LOCKING, welcher es ermöglicht auf die Daten über den "high-performance internal locking mode" (wie Sybase es beschreibt) zuzugreifen. Sollten auf die gleichen dbase Dateien Anwendungen zugreifen die nicht über den ADS gehen, so ist es jedoch zwingend notwendig den ADS_COMPATIBLE_LOCKING Mode zu verwenden, da ansonsten an dieser Stelle gilt: "Wer zu erst kommt, fragt zu erst" was bei einem Live System zu Problemen führen kann.