PDA

View Full Version : Hartcodierter OLE DB Zugriff auf AS/400-Datenbank



tschroeder
04-05-05, 06:43
Hallo,

Seit einiger Zeit nutze ich die ODBC-Schnittstelle, sprich: den ODBC-Treiber von Client Access, um auf eine AS/400 Bibliothek zuzugreifen (nur Lesezugriff, mein AS/400-Benutzer erlaubt auch nur SELECT-Abfragen auf bestimmte Tabellen).

Dazu ist auf meinem Windows2000-Rechner in der Systemsteuerung eine ODBC-Datenquelle eingerichtet.

Gibt es eine Alternative? Damit meine ich einen hartcodierten, vor allem aber einen schnelleren Zugriff auf das AS/400-System. Mein Problem ist u.a., dass einige der betroffenen AS/400-Tabellen keine Indizes besitzen. Stand jetzt sind einige SELECT-Abfragen gar nicht möglich, da mir der Timeout dazwischenfunkt, heißt, die Abfrage dauert zu lange und wird dann abgewürgt. Leider habe ich auf das Tabellendesign auf Seiten der AS/400 keinen Einfluss, muss also das Problem meinerseits lösen.

Welche Möglichkeiten habe ich, die Ausführung der Abfrage zu beschleunigen?
Die Abfragen sind in VB-Programmcode eingebettet (Access VBA/VB/VBScript).
Gibt es einen OLE DB-Treiber für den AS/400-Zugriff?

Gruß aus Ludwigsburg

Thomas

Fuerchau
04-05-05, 09:01
Es spielt da keine Rolle ob du über OLEDB oder ODBC zugreifst, das Ergebnis auf der AS/400 ist auf jeden Fall SQL.
Auch wenn du keinen Einfluss auf das Design hast, kannst du den Zugriff beschleunigen in dem du z.B. per CREATE INDEX zusätzliche Zugriffspfade z.B. in der QGPL anlegst (abhängig von der Sortierung/Gruppierung/Joins usw.), oder per Debugmodus den Hinweisen im Joblog folgst.

Der OLEDB-Treiber des CA (IBMDA400) ist nachweislich schlechter als der ODBC-Treiber. Es gibt keinen nennenswerten Unterschied, ob du per DAO mittels ODBC oder per OLEDB mit dem MSDASQL->ODBC zugreifst.

Was den Querytimeout angeht, so kannst du
a) bei DAO mittels QueryDef.QueryTimeout
b) bei OLEDB mittels Command.CommandTimeout
die Abfragezeit beeinflussen (Default = 30).

tschroeder
04-05-05, 09:21
Besten Dank. Gebe Dir Bescheid, welche der Maßnahmen das optimale Ergebnis gebracht hat.

Gruß

Thomas