MSDE2000 / Sql Express - server timeout

16/06/2008 - 17:19 von oilsardine | Report spam
hallo, Leute

habe eine Tabelle mitetwa 100 000 Zeilen, 10 Spalten. auf 6 der Spalten ist
ein Index gesetzt.
Das ist der SQL-Befehl:
select * from MELDPROT where DATUM>9594 and DATUM<9613 and (chrg_id in
(select chrg_id from chrg where closed='N') or chrg_id=-1) order by
DATUM,ZEIT,LFD;

Im SQL Query Analyzer braucht der select 52 sec, wird aber ausgeführt.

In embedded SQL (Visual Studio 6, C++) produziert er folgende Fehlermeldung:

m_ErrStr 0x00a14894 "Error: Code = 80040e31
Code meaning = IDispatch error #3121
Source = Microsoft OLE DB Provider for SQL Server
Description = Timeout abgelaufen"

was ist da faul?
danke für die Antwort(en)
 

Lesen sie die antworten

#1 Elmar Boye
16/06/2008 - 18:53 | Warnen spam
oilsardine schrieb:
habe eine Tabelle mitetwa 100 000 Zeilen, 10 Spalten. auf 6 der Spalten ist
ein Index gesetzt.
Das ist der SQL-Befehl:
select * from MELDPROT where DATUM>9594 and DATUM<9613 and (chrg_id in
(select chrg_id from chrg where closed='N') or chrg_id=-1) order by
DATUM,ZEIT,LFD;

Im SQL Query Analyzer braucht der select 52 sec, wird aber ausgeführt.



Das ist zwar schon etwas langsam...
Und die Abfrage mag eine Überarbeitung vertragen können
und Du solltest gucken, ob die 6 Indizes überhaupt genutzt werden.

In embedded SQL (Visual Studio 6, C++) produziert er folgende Fehlermeldung:

m_ErrStr 0x00a14894 "Error: Code = 80040e31
Code meaning = IDispatch error #3121
Source = Microsoft OLE DB Provider for SQL Server
Description = Timeout abgelaufen"



Du musst den CommandTimeout höher setzen oder auf 0 (für unendlich)
stellen, die Vorgabe ist dort nur 30 Sekunden.
<URL:http://msdn.microsoft.com/en-us/library/ms678265(VS.85).aspx>

Gruß Elmar

Ähnliche fragen