MSSQLSERVER_17883
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 17883 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | SRV_SCHEDULER_NONYIELDING |
Meldungstext | Prozess %ld:%ld:%ld (0x%lx) Arbeitsthread 0x%p stellt im Zeitplanungsmodul %ld kein Ergebnis bereit. Threaderstellungszeit: %I64d. Ungefähre Thread-CPU-Belegung: Kernel %I64d Millisek., Benutzer %I64d Millisek. Prozessnutzung %d%%. Leerlauf des Systems: %d%%. Intervall: % I64d Millisek. |
Erklärung
Gibt an, dass es ein mögliches Problem mit einem Thread gibt, der für einen Planer nicht verfügbar ist. Dieser Fehler kann durch eine Betriebssystembedingung, ein Umgebungsproblem oder ein Softwareproblem in SQL Server verursacht werden, oder wenn SQL Server nicht genügend Zyklen zur Ausführung erhält. Dieser Fehler kann weggehen, wenn der Thread schließlich ergibt.
Aktion des Benutzers
Wenn Sie sich die Fehlermeldungsinformationen ansehen, sehen Sie, dass bestimmte Verhaltensweisen auftreten. Zum Beispiel:
Wenn die Benutzermoduszeit schnell steigt und dies weiterhin tut, ist die wahrscheinliche Ursache eine ungebundene Schleife im SQL Server-Modul, die nicht ordnungsgemäß ergibt.
Wenn die Kernelmoduszeit schnell steigt, verbringt der Thread die meiste Zeit im Betriebssystem und erfordert kerneldebugging, um die Ursache dieses Verhaltens zu ermitteln.
Wenn die Kernelzeit und die Benutzerzeit nicht schnell steigen, wartet der Thread wahrscheinlich auf einen API-Aufruf wie
WaitForSingleObject
, ,Sleep
,WriteFile
oderReadFile
um zurückzugeben. Oder der Thread wird möglicherweise nicht vom Betriebssystem geplant. API-Stallbedingungen erfordern im Allgemeinen das Debuggen des Kernelmodus, um ihre Ursache zu ermitteln.Wenn
System Idle %
niedrig undProcess Utilization %
niedrig ist, erhält SQL Server möglicherweise nicht genügend CPU-Zyklen. Überprüfen Sie die CPU-Auslastung anderer Anwendungen auf dem System. Überprüfen Sie außerdem, ob das Paging im System ausgeführt wird. Die AusführungSELECT * FROM sys.dm_os_ring_buffers
kann auch weitere Details bereitstellen.Wenn
kernel + user
zeiten niedrig, aberProcess Utilization %
hoch sind, könnte die Fehlerbedingung darauf hindeuten, dass präemptive Thread(en) alle CPU (z. B. Garbage Collection) verbrauchen.
Die Kombination von Informationen mit der Systemnutzung und leerlaufzeit kann Einblicke in die Art des Problems liefern.
Informationen zur Erkennungslogik und häufig auftretenden Ursachen, die diese Fehlerbedingung generieren, finden Sie unter How To Diagnose and Correct Errors 17883, 17884, 17887 und 17888.