Eine Abfrage wie die folgende, die garantiert keine Zeilen zurückgibt, dauert auf einem unserer Server zwischen 0 und 160 Sekunden:
select col1, col2, col3
from tab1
where 0 = 1
Vor zwei Wochen geschah dies sechsmal im Abstand von 48 Stunden. Letzte Woche dauerte die gleiche Abfrage ~ 0 Sekunden. Ich habe Protokolle der SQLs unserer Anwendung, aber noch keine Verdächtigen gefunden. Außerdem dachte ich, dass eine Abfrage vom Typ 0 / wobei 0 = 1 niemals die Datenseiten trifft, also sollte sie gegen Datensperren auf Zeilen- / Seiten- / Tabellenebene resistent sein? Das Schema wird von keinen (bekannten) SQLs berührt.
Da das Problem nicht konsistent ist und der Server sehr stark ausgelastet ist, möchte ich die Theorie hinter dem Geschehen verstehen, bevor ich den SQL-Profiler anhänge. Andere Abfragen werden während dieser Verzögerungen problemlos ausgeführt. Ein bekanntes Problem in der Anwendung ist eine hohe Anzahl dynamisch erstellter SQL-Abfragen - etwa 200.000 eindeutige Abfragen mit insgesamt 850.000 (protokollierten) Abfragen über einen Zeitraum von 48 Stunden. Kann dies zu solchen Problemen führen?
Auf dem Server wird SQL Server 2005 Standard Edition, 96 GB RAM, Festplatten im SAN und 4 CPUs / 16 Kerne ausgeführt. Datenbankdateien und Dateigruppen sind gut optimiert und sollten kein Problem darstellen (wir untersuchen dies jedoch separat).
Alle Hinweise, wo zu suchen, wird sehr geschätzt.
Edit: Perfekt! Die Abfrage wurde wiederholt, um den Ausführungsplan hinzuzufügen, und es dauerte 1 Minute und 35 Sekunden. Hier ist der Ausführungsplan und der Screenshot mit der Abfragedauer:

Bearbeiten 2: Details zur Statistikzeit für einen zweiten Lauf. Scheint momentan konstant langsam zu sein, daher werden wir Profiler und Perfmon anhängen:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 97402 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
