Anmelden

View Full Version : MS ado und Prepared Command



Asti
05-10-06, 08:49
Hallo,

im Zuge des Redesigns einer VB Anwendung habe ich alle verwendeten SQL Statements auf Prepared Commands umgebaut. Sprich ich erzeuge während der Laufzeit ein ado Command Object, deklariere Parameter usw..... und bei Bedarf greife ich darauf zu.

Wo wird denn jetzt dieses Statement während der Laufzeit "gespeichert" und "verwaltet".

Natürlich freue ich mich über die bessere Performance, aber die Anwendung verwendet bis zu 50 verschiedene Statements und wird auf ca. 120 Windows PCs ausgeführt.

Jetzt wüsste ich gerne, welche Ressourcen dadurch auf der iSeries beansprucht werden und, noch viel wichtiger, ob es eine Möglichkeit gibt die entspr. Statements auch auf der iSeries "wieder zu finden", sprich, wie kann ich mir solch ein Prepared Command, wenn es denn auf der iSeries abgelegt wird, dort auch "anschauen"?

Gruß Andreas

Fuerchau
05-10-06, 10:42
In der ODBC-Config bzw. im Connection-String kannst du Lib und Namen eines SQLPaketes vorgeben.
Per PRTSQLINF kannst du dir diesen Inhalt dann ansehen.

Das Preparen hat damit aber nichts zu tun, da jedes Statement eben erst prepared werden muss.
Durch Zuweisung dern Commandtext-Egenschaft wird der Prepared-Status wieder aufgehoben.
Die AS/400 verwaltet das automatisch.
Wenn du im ODBC-Konfig den DEBUG-Modus anschaltest kannst du im QZDA-Job (WRKOBJLCK MYUSER *USEPRF) im Joblog die SQL's (und auch sonstige Performance-Hinweise) ansehen.

Für jedes SQL wird ein Statementname festgelegt. Ändert sich ein SQL nicht, kann die AS/400 dieses Statement wiederverwenden. Dadurch entfällt das erneute preparen.

Das SQL-Paket dient der AS/400 dazu, SQL's wiederzuerkennen. D.h., dass in diesem Fall eine Zugriffspfad-Analyse nicht mehr durchgeführt werden muss, da dies ja bereits erfolgt ist.

Seit V5R3 ist das aber in den meisten Fällen unerheblich.
Da z.B. MS-Access nicht mit prepares arbeitet, haben die Jungs der AS/400 sich was besonderes überlegt.
Enthält das SQL keine Parametermarker ersetzt die AS/400 alle Variableninhalt durch eben solche, schaut dann im SQL-Paket nach obs das schon gab und schenkt sich dann die weitere Analyse.

Asti
26-10-06, 09:39
Bin endlich dazu gekommen das zu probieren ......