Discussion:
Fehler bei DB-Abfrage: [ODBC SQL Server Driver]Timeout abgelaufen
(zu alt für eine Antwort)
AndreasU
2006-05-22 10:34:01 UTC
Permalink
Hallo,
ich mache eine DB-Abfrage auf einer ASP-Seite. Dabei erhalte ich folgende
Fehlermeldung im Internetexplorer:

Fehlertyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
/scadalaman/f_statistik01.asp, line 426


In der Zeile 426 steht folgendes:
418 '***********************************************
419 ' SQL Abfragestring zusammensetzen
420 strSQL = "SELECT signalid FROM signals WHERE Name = '" & strSignalname
& "'"
421
422 '***************************************************
423 ' Objekt für öffnen der Datenbankverbindung erstellen
424 Set rs = CreateObject("ADODB.Recordset")
425
426 rs.Open strSQL ,"DSN=WEBfactory;UID=sa;PWD=xyz"

Der Inhalt der Variable strSQL sieh so aus: “SELECT signalid FROM signals
WHERE Name = 'S02_COUNT019L'”, die Anweisung funktioniert im Enterprise
Manager

Woran kann es liegen? Ich bin mir sicher, dass es bei mir schon mal
funktioniert hat.

´Danke.

Andreas Ulbricht
Hubert Daubmeier
2006-05-22 17:30:25 UTC
Permalink
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf

SELECT top 5 signalid FROM ...

setze. Damit würden nur die ersten 5 Sätze kommen.

Oder noch banaler als

SELECT "hallo welt" as signalid <nix mehr weiter>

Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung zur DB
hängen.
--
Viele Grüße
Hubert Daubmeier
AndreasU
2006-05-23 14:11:02 UTC
Permalink
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.

In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.

Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...

Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht geht (aber
fuktionieren soll).

Nun ist die Frage, was ist anders?

Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben. Es lief
schon...

Ich wäre für Hilfe dankbar.

Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung zur DB
hängen.
--
Viele Grüße
Hubert Daubmeier
Matthias Wolf
2006-05-24 11:26:39 UTC
Permalink
Hallo

prüfe dochmal, wie die Timeouteinstellungen für den Browser sind:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0

Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.

Gruß

Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.)
funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht geht (aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben. Es lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung zur DB
hängen.
--
Viele Grüße
Hubert Daubmeier
AndreasU
2006-05-29 06:45:01 UTC
Permalink
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.

Hat noch jemand Ideen?
Vielen Dank.

Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht geht (aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben. Es lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung zur DB
hängen.
--
Viele Grüße
Hubert Daubmeier
Stefan Bornemann
2006-05-29 23:11:10 UTC
Permalink
Hallo Andreas,

habe ich das richtig verstanden, dass der Timeout auf dem problematischen
System nicht auftritt, wenn Du die Ergebnismenge mit TOP 5 auf 5 Datensätze
beschränkst? Wenn ja, wie viele Datensätze erwartest Du ohne Beschränkung?
Kannst Du die Query-Laufzeiten auf dem problematischen und einem
funktionierenden System vergleichen (TOP 5 ist dafür vielleicht zu klein,
aber TOP 100 oder TOP 1000 könnte aussagekräftig sein). Können Indizes
verloren gegangen sein? Hast Du schon versucht die Indizes bzw. deren
Statistiken neu zu erstellen?

Ich hatte beispielsweise mal ein System (SQL Server 2000 SP2), bei dem ein
Query 14 Min dauerte. Update Stats brachte die Laufzeit auf 6 Sekunden
runter.

Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.
Hat noch jemand Ideen?
Vielen Dank.
Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht geht (aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben. Es lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung
zur
DB
hängen.
--
Viele Grüße
Hubert Daubmeier
AndreasU
2006-05-30 11:02:02 UTC
Permalink
Hallo Stefan,
das Ergebnis meiner Abfrage ist 1 Datensatz, eine ID eines Signals.

"SELECT signalid FROM signals WHERE Name = 'Signal01'"

Das erwartete Ergebnis kommt auch zurück, wenn ich die Abfrage im Enterprise
Manager durchführe.

Es daf zu jeden Signal nur eine ID geben. Es ist also kein Problem der
Ergebnismenge.

Ich habe keine Ideen, wo ich noch suchen soll.

Ich vermute vielmehr, das es en Problem des OLEDB Treibers ist. Die Meldung
kommt nach ca. 15 sek. (Standardwert?).

Andere Anwendungen
Post by Stefan Bornemann
Hallo Andreas,
habe ich das richtig verstanden, dass der Timeout auf dem problematischen
System nicht auftritt, wenn Du die Ergebnismenge mit TOP 5 auf 5 Datensätze
beschränkst? Wenn ja, wie viele Datensätze erwartest Du ohne Beschränkung?
Kannst Du die Query-Laufzeiten auf dem problematischen und einem
funktionierenden System vergleichen (TOP 5 ist dafür vielleicht zu klein,
aber TOP 100 oder TOP 1000 könnte aussagekräftig sein). Können Indizes
verloren gegangen sein? Hast Du schon versucht die Indizes bzw. deren
Statistiken neu zu erstellen?
Ich hatte beispielsweise mal ein System (SQL Server 2000 SP2), bei dem ein
Query 14 Min dauerte. Update Stats brachte die Laufzeit auf 6 Sekunden
runter.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.
Hat noch jemand Ideen?
Vielen Dank.
Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht geht (aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben. Es lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung
zur
DB
hängen.
--
Viele Grüße
Hubert Daubmeier
Stefan Bornemann
2006-05-31 01:01:53 UTC
Permalink
Hi Andreas,

15 Sekunden ist der Standard-Wert für einen Connection-Timeout. Läuft da
vielleicht neuerdings eine Firewall auf dem Rechner? Wenn die Anwendung
Verbindungen zur Datenbank per TCP/IP aufbaut, könnte das eine Erklärung
sein.

Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo Stefan,
das Ergebnis meiner Abfrage ist 1 Datensatz, eine ID eines Signals.
"SELECT signalid FROM signals WHERE Name = 'Signal01'"
Das erwartete Ergebnis kommt auch zurück, wenn ich die Abfrage im Enterprise
Manager durchführe.
Es daf zu jeden Signal nur eine ID geben. Es ist also kein Problem der
Ergebnismenge.
Ich habe keine Ideen, wo ich noch suchen soll.
Ich vermute vielmehr, das es en Problem des OLEDB Treibers ist. Die Meldung
kommt nach ca. 15 sek. (Standardwert?).
Andere Anwendungen
Post by Stefan Bornemann
Hallo Andreas,
habe ich das richtig verstanden, dass der Timeout auf dem problematischen
System nicht auftritt, wenn Du die Ergebnismenge mit TOP 5 auf 5 Datensätze
beschränkst? Wenn ja, wie viele Datensätze erwartest Du ohne Beschränkung?
Kannst Du die Query-Laufzeiten auf dem problematischen und einem
funktionierenden System vergleichen (TOP 5 ist dafür vielleicht zu klein,
aber TOP 100 oder TOP 1000 könnte aussagekräftig sein). Können Indizes
verloren gegangen sein? Hast Du schon versucht die Indizes bzw. deren
Statistiken neu zu erstellen?
Ich hatte beispielsweise mal ein System (SQL Server 2000 SP2), bei dem ein
Query 14 Min dauerte. Update Stats brachte die Laufzeit auf 6 Sekunden
runter.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.
Hat noch jemand Ideen?
Vielen Dank.
Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht
geht
(aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben.
Es
lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung
zur
DB
hängen.
--
Viele Grüße
Hubert Daubmeier
AndreasU
2006-05-31 11:03:02 UTC
Permalink
Hallo zusammen,
ich habe eine Lösung gefunden. Die Lösung ist nicht sooo toll aber sie
funktioniert (erstmal).
Ich habe in meinen ConnectionString den Wert "Connection Timeout=60"
eingebaut. Ich habe also das standardmäßige Timeout von 15 Sekunden auf 1
Minute erhöht.

Jetzt funktioniert es (solange, bis das System wieder langsam wird). Gerade
deshalb finde ich die lösung nicht so toll.

Mir stellen sich folgende Fragen:
- Warum braucht die DB solange, bis sie einen Datensatz zurückliefert????
Das läuft alles lokal und es ist ein 2,4GHz PC mit 512MB RAM.
- Kann ich das irgendwie optimieren? Damit muß ich mich noch beschäftigen.
Es finden auf der ASP Seite ca 500 DB-Abfragen statt und das dauert bis zu 2
min.

Ich habe keine Firewall installiert (die wirkt doch lokal sowieso nicht
oder?).

Vielen Dank für die zahlreichen Antworten.

Andreas Ulbricht
Post by Stefan Bornemann
Hi Andreas,
15 Sekunden ist der Standard-Wert für einen Connection-Timeout. Läuft da
vielleicht neuerdings eine Firewall auf dem Rechner? Wenn die Anwendung
Verbindungen zur Datenbank per TCP/IP aufbaut, könnte das eine Erklärung
sein.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo Stefan,
das Ergebnis meiner Abfrage ist 1 Datensatz, eine ID eines Signals.
"SELECT signalid FROM signals WHERE Name = 'Signal01'"
Das erwartete Ergebnis kommt auch zurück, wenn ich die Abfrage im Enterprise
Manager durchführe.
Es daf zu jeden Signal nur eine ID geben. Es ist also kein Problem der
Ergebnismenge.
Ich habe keine Ideen, wo ich noch suchen soll.
Ich vermute vielmehr, das es en Problem des OLEDB Treibers ist. Die Meldung
kommt nach ca. 15 sek. (Standardwert?).
Andere Anwendungen
Post by Stefan Bornemann
Hallo Andreas,
habe ich das richtig verstanden, dass der Timeout auf dem problematischen
System nicht auftritt, wenn Du die Ergebnismenge mit TOP 5 auf 5 Datensätze
beschränkst? Wenn ja, wie viele Datensätze erwartest Du ohne Beschränkung?
Kannst Du die Query-Laufzeiten auf dem problematischen und einem
funktionierenden System vergleichen (TOP 5 ist dafür vielleicht zu klein,
aber TOP 100 oder TOP 1000 könnte aussagekräftig sein). Können Indizes
verloren gegangen sein? Hast Du schon versucht die Indizes bzw. deren
Statistiken neu zu erstellen?
Ich hatte beispielsweise mal ein System (SQL Server 2000 SP2), bei dem ein
Query 14 Min dauerte. Update Stats brachte die Laufzeit auf 6 Sekunden
runter.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.
Hat noch jemand Ideen?
Vielen Dank.
Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.)
funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht
geht
(aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben.
Es
lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die
Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung
zur
DB
hängen.
--
Viele Grüße
Hubert Daubmeier
Knuth Konrad
2006-06-01 13:58:05 UTC
Permalink
Wie gehst Du den mit den/der DB-Connection um? Die MSDE hat Einschränken
was max. Anzahl gleichzeitige Connections anbelangt. Evtl. sieht Du hier
Auswirkungen davon.

Knuth
Post by AndreasU
Hallo zusammen,
ich habe eine Lösung gefunden. Die Lösung ist nicht sooo toll aber sie
funktioniert (erstmal).
Ich habe in meinen ConnectionString den Wert "Connection Timeout=60"
eingebaut. Ich habe also das standardmäßige Timeout von 15 Sekunden auf 1
Minute erhöht.
Jetzt funktioniert es (solange, bis das System wieder langsam wird). Gerade
deshalb finde ich die lösung nicht so toll.
- Warum braucht die DB solange, bis sie einen Datensatz zurückliefert????
Das läuft alles lokal und es ist ein 2,4GHz PC mit 512MB RAM.
- Kann ich das irgendwie optimieren? Damit muß ich mich noch beschäftigen.
Es finden auf der ASP Seite ca 500 DB-Abfragen statt und das dauert bis zu 2
min.
Ich habe keine Firewall installiert (die wirkt doch lokal sowieso nicht
oder?).
Vielen Dank für die zahlreichen Antworten.
Andreas Ulbricht
Post by Stefan Bornemann
Hi Andreas,
15 Sekunden ist der Standard-Wert für einen Connection-Timeout. Läuft da
vielleicht neuerdings eine Firewall auf dem Rechner? Wenn die Anwendung
Verbindungen zur Datenbank per TCP/IP aufbaut, könnte das eine Erklärung
sein.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo Stefan,
das Ergebnis meiner Abfrage ist 1 Datensatz, eine ID eines Signals.
"SELECT signalid FROM signals WHERE Name = 'Signal01'"
Das erwartete Ergebnis kommt auch zurück, wenn ich die Abfrage im Enterprise
Manager durchführe.
Es daf zu jeden Signal nur eine ID geben. Es ist also kein Problem der
Ergebnismenge.
Ich habe keine Ideen, wo ich noch suchen soll.
Ich vermute vielmehr, das es en Problem des OLEDB Treibers ist. Die Meldung
kommt nach ca. 15 sek. (Standardwert?).
Andere Anwendungen
Post by Stefan Bornemann
Hallo Andreas,
habe ich das richtig verstanden, dass der Timeout auf dem problematischen
System nicht auftritt, wenn Du die Ergebnismenge mit TOP 5 auf 5 Datensätze
beschränkst? Wenn ja, wie viele Datensätze erwartest Du ohne Beschränkung?
Kannst Du die Query-Laufzeiten auf dem problematischen und einem
funktionierenden System vergleichen (TOP 5 ist dafür vielleicht zu klein,
aber TOP 100 oder TOP 1000 könnte aussagekräftig sein). Können Indizes
verloren gegangen sein? Hast Du schon versucht die Indizes bzw. deren
Statistiken neu zu erstellen?
Ich hatte beispielsweise mal ein System (SQL Server 2000 SP2), bei dem ein
Query 14 Min dauerte. Update Stats brachte die Laufzeit auf 6 Sekunden
runter.
Viele Grüße
Stefan Bornemann
Post by AndreasU
Hallo,
der Wert war nicht vorhanden. Ich habe den Wert angelegt und den Schlüssel
mit meinen funktionierenden PC verglichen. Nun sind sie gleich, das hat aber
nichts gebracht.
Es funktioniert nicht.
Hat noch jemand Ideen?
Vielen Dank.
Andreas Ulbricht
Post by Matthias Wolf
Hallo
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings]
"ReceiveTimeout"=dword:000493E0
Es kann sein, dass dieser Wert noch nicht existiert, dann gilt m. E. ein
Default von 30 Sekunden.
Gruß
Matthias
Post by AndreasU
Hallo Hubert,
als Antwort bekomme ich einen Datensatz zurück. Der Abfragestring
funktioniert auch.
In diesen Fall geht es um ein webbasiertes Leitsystem. Dort ist eine DB
Abfrage drin. Wir benutzen die MSDE2000 als Datenbank.
Ich habe bemerkt, daß es auf einen anderen PC (mit XP Prof.) funktioniert...
Ich habe 2 PC's (1 mit Win2000SP4 und 1 PC XP Prof.) wo es nicht
geht
(aber
fuktionieren soll).
Nun ist die Frage, was ist anders?
Kann es ein Treiberproblem (Version?) sein? Der nichtfunktionierende XP
Prof. PC steht beim Kunden. Ich weiß nicht, was die gespielt haben.
Es
lief
schon...
Ich wäre für Hilfe dankbar.
Andreas
Post by Hubert Daubmeier
"AndreasU" schrieb
Post by AndreasU
[Microsoft][ODBC SQL Server Driver]Timeout abgelaufen
Wie die Fehlermeldung sagt liegt es am Timeout. Vielleicht ist das
Datenvolumen so extrem, dass er "zumacht". Die Vermutung liese sich
eingrenzen indem ich einfach das SQL statement testweise mal auf
SELECT top 5 signalid FROM ...
setze. Damit würden nur die ersten 5 Sätze kommen.
Oder noch banaler als
SELECT "hallo welt" as signalid <nix mehr weiter>
Dann holt er überhaupt keinen Daten und ich wüsste zumindest die Verbindung
zur DB steht - oder eben nicht und dann würde es an der Verbindung
zur
DB
hängen.
--
Viele Grüße
Hubert Daubmeier
Loading...