Partilhar via


MSSQLSERVER_17883

Aplica-se a: SQL Server

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 17883
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico SRV_SCHEDULER_NONYIELDING
Texto da mensagem Processo %ld:%ld:%ld (0x%lx) Trabalhador 0x%p parece não estar produzindo no Agendador %ld. Hora de criação do thread: % I64d. Thread aprox. de uso da CPU: kernel %I64d ms, usuário %I64d ms. Utilização do processo %d%%. Sistema inativo %d%%. Intervalo: %I64d ms.

Explicação

Indica que há um possível problema com um thread que não está sendo renderizado em um agendador. Esse erro pode ser causado por uma condição do sistema operacional, problema de ambiente ou problema de software no SQL Server ou se o SQL Server não estiver recebendo ciclos suficientes para ser executado. Esse erro pode desaparecer se o thread eventualmente ceder.

Ação do usuário

Se você observar as informações da mensagem de erro, verá que certos comportamentos surgem. Por exemplo:

  • Se o tempo do modo de usuário aumentar rapidamente e continuar a fazê-lo, a causa provável é um loop não associado no mecanismo do SQL Server que não está produzindo corretamente.

  • Se o tempo do modo kernel aumentar rapidamente, o thread passará a maior parte do tempo no sistema operacional e exigirá a depuração do kernel para determinar a causa raiz desse comportamento.

  • Se o tempo do kernel e o tempo do usuário não estiverem aumentando rapidamente, o thread provavelmente estará aguardando uma chamada à API, como WaitForSingleObject, Sleep, WriteFile, ou ReadFile retornar. Ou o thread pode não estar sendo agendado pelo sistema operacional. As condições de paralisação da API geralmente exigem depuração do modo kernel para determinar sua causa raiz.

  • Se System Idle % for baixo e Process Utilization % baixo, o SQL Server pode não estar obtendo ciclos de CPU suficientes. Verifique a utilização da CPU de outros aplicativos no sistema. Além disso, verifique se a paginação está acontecendo no sistema. A corrida SELECT * FROM sys.dm_os_ring_buffers também pode fornecer mais detalhes.

  • Se kernel + user os tempos forem baixos, mas Process Utilization % altos, a condição de erro poderá indicar que os threads preemptivos estão consumindo toda a CPU (por exemplo, coleta de lixo).

A combinação de informações com a utilização do sistema e o tempo ocioso pode fornecer informações sobre a natureza do problema.

Para entender a lógica de detecção e os motivos comuns que geram essa condição de erro, consulte Como diagnosticar e corrigir os erros 17883, 17884, 17887 e 17888.