View Full Version : SQL0666 - Geschätzte Abfrageverarbeitungsdauer von 326 überschreitet Zeitlimit von 60
Hallo,
ich habe folgendes Problem:
Mit dem SQLServer 2008 Visualstudio greife ich über eine ADO.NET-Verbindung auf eine DB2 auf der AS400 zu.
Die Abfrage auf die 1. Tabelle liefert mir alle Datensätze (ca. 500.000) aber der Zugriff auf die 2. Tabelle (ca. 100.000 DS) produziert folgende Fehlermeldung: "iSeries Access ODBC Driver DB2 UDB SQL0666 - geschätzte Abfragedauer von 30 überschreitet Zeitlimit von 30 (CWBODBC.DLL). Komisch ist nur, dass mit der Anweisung select * from tabelle2 fetch first 5949 row only die Datensätze angezeigt werden.
Woran kann das liegen?
AS400.lehrling
30-06-10, 16:21
Hallo,
ich habe folgendes Problem:
Zugriff auf die 2. Tabelle (ca. 100.000 DS) produziert folgende Fehlermeldung: "iSeries Access ODBC Driver DB2 UDB SQL0666 - geschätzte Abfragedauer von 30 überschreitet Zeitlimit von 30 (CWBODBC.DLL).
Ändere doch das Zeitlimit, erhöhe es von 30 auf 60 und probiere es noch einmal:)
Gruß AS400.lehrling
Über Access kann ich tadellos zugreifen. Nur über das Visual Studio nicht. Wo müsste ich da ein Zeitlimit erhöhen?
AS400.lehrling
30-06-10, 16:50
Über Access kann ich tadellos zugreifen. Nur über das Visual Studio nicht. Wo müsste ich da ein Zeitlimit erhöhen?
Das müsste in der ODBC einstellung gehen.
Schau mal beim Visual Studio unter Optionen oder Einstellungen, irgendwo dort müste sich das einstellen lassen.
Gruß AS400.lehrling
Das komische ist nur, dass die über 500.000 DS aus der 1. Tabelle gelesen werden und die 100.000 aus der 2. nicht:confused: Am ODBC-Treiber ist übrigens kein Zeitlimit eingestellt. Ich kann dort nur ja oder nein aktivieren
Das ODBC-Zeitlimit lässt sich auch über die QAQQINI (QQRYTIMLMT) bzw. den Systemwert einstellen.
Damit kann der Default überschrieben werden.
Allerdings könnte es trotzdem an fehlenden Indizes liegen, dass die Abfrage so lange dauert.
Es liegt nicht an der Anzahl Sätze.
Nachtrag:
Wenn du über ein Command-Objekt zugreifst, ändere die CommandTimeout-Eigenschaft. Allerdings wird deine Abfrage wirklich nicht besonders schnell werden.
I habe vergessen zu erwähnen, dass es sich um eine View handelt. Zudem habe ich über Access von meinem Client aus tadellosen Zugriff auf diese View.
Über das Visualstudio vom SQL-Server aus jedoch nicht....
andreaspr@aon.at
01-07-10, 08:09
Wie Fürchau schon geschrieben hat, hängt es nicht nur von der Anzahl der DS ab. Neben den Indices kann auch der unterschied daran liegen, wenn die 1. Tabelle mit den 500.000 DS nur 5 Spalten hat und die 2. Tabelle 50 Spalten mit mehreren 10000 VARCHAR usw.
Access holt sich auch nicht alle 100.000 DS auf einmal, sondern nur soviel wie du gerade benötigst. (Deshalb verkleinert sich der Scroll-Balken je weiter du runterblätterst). Im Visual Studio holst du dir jedoch ALLE Sätze (warum auch immer).
Die Frage ist doch, wie der Select auf die View grundsätzlich aussieht.
Enthält er weitere Where-Klauseln, die auch Indizes benötigen ?
Holst du wirklich alle Daten ab ?
Der Unterschied zwischen Access und .NET ist, dass Access sog. Servercursor verwendet während .NET keine Servercursor mehr hat, also immer das gesamte Ergebnis lädt.
Ausserdem solltest du dir einen "Order By" in .NET sparen und lieber anschließend über eine DataView das Ergebnis sortieren.