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 liefert. Dieser Fehler kann durch eine Betriebssystembedingung, ein Umgebungsproblem oder ein Softwareproblem in SQL Server verursacht werden oder wenn SQL Server nicht genügend Zyklen für die Ausführung erhält. Dieser Fehler kann verschwinden, wenn der Thread schließlich ergibt.

Benutzeraktion

Wenn Sie sich die Fehlermeldungsinformationen ansehen, sehen Sie, dass bestimmte Verhaltensweisen auftreten. Beispiel:

  • Wenn die Zeit im Benutzermodus schnell steigt und dies weiterhin tut, ist die wahrscheinliche Ursache eine ungebundene Schleife in der SQL Server-Engine, die nicht ordnungsgemäß ergibt.

  • Wenn die Zeit im Kernelmodus schnell steigt, verbringt der Thread die meiste Zeit mit dem Betriebssystem und erfordert kerneldebuggen, um die Grundursache dieses Verhaltens zu ermitteln.

  • Wenn die Kernelzeit und die Benutzerzeit nicht schnell zunimmt, wartet der Thread wahrscheinlich darauf, dass ein API-Aufruf wie WaitForSingleObject, Sleep, WriteFileoder ReadFile zurückgegeben wird. Oder der Thread wird möglicherweise nicht vom Betriebssystem geplant. API-Stillstandsbedingungen erfordern in der Regel das Debuggen im Kernelmodus, um ihre Grundursache zu ermitteln.

  • Wenn System Idle % niedrig und Process Utilization % niedrig ist, erhalten SQL Server möglicherweise nicht genügend CPU-Zyklen. Überprüfen Sie die CPU-Auslastung anderer Anwendungen auf dem System. Überprüfen Sie auch, ob das Paging im System ausgeführt wird. Die Ausführung SELECT * FROM sys.dm_os_ring_buffers kann auch weitere Details liefern.

  • Wenn kernel + user die Zeiten niedrig, aber Process Utilization % hoch sind, kann die Fehlerbedingung darauf hindeuten, dass präemptive Threads die gesamte CPU (z. B. Garbage Collection) verbrauchen.

Die Kombination von Informationen mit der Systemauslastung und der Leerlaufzeit kann einen Einblick in die Art des Problems bieten.

Informationen zur Erkennungslogik und allgemeinen Ursachen, die diese Fehlerbedingung generieren, finden Sie unter Diagnostizieren und Korrigieren von Fehlern 17883, 17884, 17887 und 17888.