PDA

View Full Version : IDB ODBC Fehler Excel 2000 VB6



CrazyMetal
13-10-09, 13:19
Hallo Zusammen,
ich habe ein Problem mit einer SQL-Abfrage, welche ich aus einem Excel(2000)
Makro ausführe.

Es ist ein ziemlich umfangreiches Makro, welches viele Abfragen auf der AS/400
ausführt, die Funktionieren.

Nun bekomme ich bei meine Abfrage folgende Fehlermeldung:



Laufzeitfehler '-2147467259(80004005)':
[IBM][Client Access Express ODBC-Treiber(32-Bit)][DB2/400]SQL0666-
SQL-Abfrage überschreitet Angabe für Zeitlimit oder Speicherlimit.


Interressanter Weise, habe ich 2 identische Abfragen auf unterschiedlichen Tabellen,
diese ähneln sich jedoch. Beide Abfragen sind identisch. Die eine Funktioniert, die
Andere ---> PENG


Beide Abfragen funktionieren auf der AS/400 via 5250 ....?
Fall jemand von Euch eine Idee hat wäre ich sehr dankbar.

Viele Grüße,
Crazy



Die Abfrage:


SELECT DISTINCT t.num1, t.txt1 FROM tabelle1 AS t
WHERE t.num1 IN

(SELECT text1 FROM tabelle2 WHERE num2 = 001 AND
num3 = 42 AND flag = 'P' AND jahr IN (2008, 2007) GROUP BY num1 )

AND t.num2 = 001 AND t.num1 > 0 ORDER BY t.num1

BenderD
13-10-09, 14:27
IBM - ODBC Query Timeout Property: SQL0666 Estimated Query Processing Time Exceeds Limit (http://www-01.ibm.com/support/docview.wss?uid=nas1337ac2bf0df7e4268625697d00793e b5)

es rentiert sich aber nochmal zu googeln, da gibt es einen launigen Artikel zu den estimates des Query Pessimizers...



Hallo Zusammen,
ich habe ein Problem mit einer SQL-Abfrage, welche ich aus einem Excel(2000)
Makro ausführe.

Es ist ein ziemlich umfangreiches Makro, welches viele Abfragen auf der AS/400
ausführt, die Funktionieren.

Nun bekomme ich bei meine Abfrage folgende Fehlermeldung:



Interressanter Weise, habe ich 2 identische Abfragen auf unterschiedlichen Tabellen,
diese ähneln sich jedoch. Beide Abfragen sind identisch. Die eine Funktioniert, die
Andere ---> PENG


Beide Abfragen funktionieren auf der AS/400 via 5250 ....?
Fall jemand von Euch eine Idee hat wäre ich sehr dankbar.

Viele Grüße,
Crazy



Die Abfrage:


SELECT DISTINCT t.num1, t.txt1 FROM tabelle1 AS t
WHERE t.num1 IN

(SELECT text1 FROM tabelle2 WHERE num2 = 001 AND
num3 = 42 AND flag = 'P' AND jahr IN (2008, 2007) GROUP BY num1 )

AND t.num2 = 001 AND t.num1 > 0 ORDER BY t.num1

Fuerchau
13-10-09, 14:56
Das Problem ist hier der QueryTimeLimit!
Wenn die AS/400 glaubt, dass die Abfrage zu lange dauert, kommt dieser Fehler.
Häufigste Ursache: Fehlende Schlüssel (Index/LF) und viele Daten.

Die QueryZeit (ODBC-Timeout) läßt sich Clientseitig nur über die Registry einstellen (k.A. wo).

Alternativ kann man in der ODBC-Konfig eine Optionsdatei (auf der AS/400) QAQQINI angeben in der man das Timelimit dann definieren kann.

Vorrangig sollte allerdings der SQL geprüft werden.

STRSQL optimiert für Dialog, so dass hier meist der Timer gar nicht zuschlägt.