Freigeben über


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, WriteFileoder ReadFile 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 und Process 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ührung SELECT * FROM sys.dm_os_ring_buffers kann auch weitere Details bereitstellen.

  • Wenn kernel + user zeiten niedrig, aber Process 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.