View Full Version : MSSQL Verbindungsserver zur AS/400 über OLEDB
Hallo Forum,
Ich hätte eine Frage zum Thema MSSQL Verbindungsserver zur AS/400 über OLEDB.
Und zwar habe ich selbiges auf einem SQL Server 2000 eingerichtet. Die Verbindung funktioniert und ich kann aus dem MS SQL Server Managemant Studio heraus Select Statements auf die AS/400 absetzen und erhalte auch Daten.
Allderding - und das ist mein Problem - dauert es relativ lange bis die Daten da sind. Unabhängig von der Datenmenge dauert eine Abfragen zwischen 10 und 18 Sekunden. Die gleiche Abfrage aus dem interaktiven SQL der AS/400 dauert Bruchteile von Sekunden.
Dauert da die Anmeldung an der AS/400 so lange oder gibt es noch irgendwo einen verborgenen Schalter?
Mir ist klar dass es nicht so schnell gehen kann wie im interaktiven SQL aber 10 Sekunden sind definitiv zu lang.
Vorab, vielen Dank für Euere Hilfe.
Ich würde da mal die Zugriffspfade analysieren und die verwendeten Where/Order-Klauseln.
STRSQL optimiert für den Dialog und ist deshalb bei den ersten Sätzen meist schneller als der spätere Batch-SQL.
Vielen Dank für die rasche Antwort,
Mein Statement ist
Select Astnum,Bz1,Bz2 From AS400.S10A5F7E.FSBD101FAS.FSAST00P Where Astnum = 'TEST'
Der Primärschlüssel der Datei ist das Feld AstNum.
Egal ob die Abfrage einen oder 1000 Sätze zurück gibt. Die Antwortzeit ist immer ziemlich gleich.
Was sind in solch einem Fall normale Antwortzeiten?
Hallo,
welches Release ist denn auf der ISeries installiert. Es gibt für R540 ein Apar für OLEDB.
IBM - SE28973 - CA400EXP-OLEDB-PERFM OLEDB NEW BLOCK SIZE PROPERTY (http://www-1.ibm.com/support/docview.wss?rs=0&dc=DB550&dc=D100&q1=oledb+performance&uid=nas256e8ee95714eeada862572e6003c8083&loc=en_US&cs=UTF-8&lang=all)
Auf der AS/400 ist V5R3.
Vermutlich kann ich dann das neue Property nicht nützen.
Wäre eine ODBC Verbindung schneller?
Wenn ja, könnte ich ja vielleicht mal eine ODBC Verbindung ausprobieren.
Hallo,
hier noch einen LinK:
IBM - SQL Server 2000 Linked Servers and Client Access (http://www-1.ibm.com/support/docview.wss?rs=0&context=SWG60&dc=DB520&dc=D900&dc=D800&dc=DA900&dc=DA800&q1=oledb+performance+AND+AS400KBXXYYZZRCH&uid=nas1a4687ffd7e9a754786256a530061c1fb&loc=en_US&cs=UTF-8&lang=all)
Die Frage ist da eher, was der SQL-Server da so treibt.
Aber du kannst sicherlich besser den ODBC-Treiber des CA verwenden und eine DSN einrichten.
Für den SQL-Server nimmst du als Provider dann den MSDASQL, der als Verbindungsfolge ODBC-Parameter akzeptiert (Provider=MSDASQL, DSN=MyDsn).
In der ODBC-Konfig des CA kannst du dann z.B. den Debugmodus einschalten um im Joblog des QZDA-Job's die hinweise und Zeiten sehen zu können.
Auffinden des QZDA-Job's mit
WRKOBJLCK MYUSER *USRPRF
wobei MYUSER der Anmeldeuser des SQL-Servers an der AS/400 ist.
Generell denke ich, dass nicht die AS/400 schuld daran ist.
Hallo zusammen,
Ich habe jetzt eine ODBC Verbindung eingerichtet. Die Antwortzeit des gleichen Statements dauert jetzt noch 3 Sekunden. Im Log ist auch die Verwendung eines Index zu sehen, wobei ich nicht verstehe warum nicht ein anderer Index verwendet wird der aus meiner Sicht besser passen würde.
Ich gebe micht jetzt erst mal mit dem Ergebnis zufrieden, wobei natürlich noch schneller besser wäre.
An dieser Stelle vielen Dank für die Hilfe.
mfg.
E. Sichert
GutmannHGW
07-02-08, 10:20
Ich habe in C# einmal einen Test gemacht u. verschiedene Provider getestet.
Die Seite connection-strings.com (http://www.connection-strings.com) half mir dabei.
Ich kam zu folgenden ergebnis:
Der bei CA 5.7 mitgelieferte iDB2 Adapter war der schnellste, wenn auch etwas eigenartig mit den AS400-Datentypen. An Platz 2 kam der um 1/3 langsamere ODBC u. mit größeren Abstand der OLEDB Provider.
Aber Reaktionszeit war bei allen sehr schnell.
Nur so zur Info ;)
Das mit dem Index ist so eine Sache.
Prüfe mal die Art der Where/Order-Klausel und ob es ggf. nicht passende Feldtypen gibt.
Auch ein Index (LF), der eine eigene Select/Omit-Klausel hat, kann nicht verwendet werden.