MSSQLSERVER_17883
Si applica a: SQL Server
Dettagli
Attributo | valore |
---|---|
Nome prodotto | SQL Server |
ID evento | 17883 |
Origine evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbolico | SRV_SCHEDULER_NONYIELDING |
Testo del messaggio | Processo %ld:%ld:%ld (0x%lx) È possibile che il thread di lavoro 0x%p non ceda il controllo all'utilità di pianificazione %ld. Durata creazione thread: %I64d. Utilizzo CPU thread (circa): kernel %I64d ms, utente %I64d ms. Utilizzo processo %d%%. Inattività del sistema: %d%%. Intervallo: %I64d ms. |
Spiegazione
Indica che si è verificato un possibile problema con un thread che non restituisce in un'utilità di pianificazione. Questo errore può essere causato da una condizione del sistema operativo, un problema di ambiente o un problema software in SQL Server o se SQL Server non ottiene cicli sufficienti per l'esecuzione. Questo errore può andare via se il thread alla fine restituisce.
Azione utente
Se si esaminano le informazioni sul messaggio di errore, si noterà che emergono determinati comportamenti. Ad esempio:
Se il tempo in modalità utente sale rapidamente e continua a farlo, la causa probabile è un ciclo non associato nel motore di SQL Server che non restituisce correttamente.
Se il tempo della modalità kernel sale rapidamente, il thread spende la maggior parte del tempo nel sistema operativo e richiede il debug del kernel per determinare la causa radice di questo comportamento.
Se il tempo del kernel e il tempo dell'utente non aumentano rapidamente, è probabile che il thread sia in attesa di una chiamata API, ad
WaitForSingleObject
esempio ,Sleep
,WriteFile
oReadFile
di restituire. In alternativa, il thread potrebbe non essere pianificato dal sistema operativo. Le condizioni di stallo dell'API richiedono in genere il debug in modalità kernel per determinare la causa radice.Se
System Idle %
è basso edProcess Utilization %
è basso, SQL Server potrebbe non ottenere cicli di CPU sufficienti. Controllare l'utilizzo della CPU di altre applicazioni nel sistema. Controllare anche se il paging è in corso nel sistema. L'esecuzioneSELECT * FROM sys.dm_os_ring_buffers
può fornire anche altri dettagli.Se
kernel + user
i tempi sono bassi maProcess Utilization %
è elevato, la condizione di errore potrebbe indicare che i thread preemptive utilizzano tutta la CPU( ad esempio, Garbage Collection).
La combinazione di informazioni con l'utilizzo del sistema e il tempo di inattività possono fornire informazioni dettagliate sulla natura del problema.
Per comprendere la logica di rilevamento e i motivi comuni che generano questa condizione di errore, vedere Come diagnosticare e correggere gli errori 17883, 17884, 17887 e 17888.