Compartir vía


MSSQLSERVER_17883

Se aplica a: SQL Server

Detalles

Attribute Valor
Nombre del producto SQL Server
Id. de evento 17883
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico SRV_SCHEDULER_NONYIELDING
Texto del mensaje Parece que el proceso %ld:%ld:%ld (0x%lx) Trabajo 0x%p no rinde en el programador %ld. Thread creation time: %I64d. CPU usada por el subproceso (aprox.): kernel %I64d ms, usuario %I64d ms. Uso del proceso %d%%. Sistema inactivo %d%%. Intervalo: %I64d ms.

Explicación

Indica que hay un posible problema con un subproceso que no se produce en un programador. Este error puede deberse a una condición del sistema operativo, un problema de entorno o un problema de software en SQL Server o si SQL Server no obtiene suficientes ciclos para ejecutarse. Este error puede desaparecer si el subproceso finalmente produce.

Acción del usuario

Si observa la información del mensaje de error, verá que surgen ciertos comportamientos. Por ejemplo:

  • Si el tiempo del modo de usuario sube rápidamente y continúa haciéndolo, la causa probable es un bucle sin enlazar en el motor de SQL Server que no produce correctamente.

  • Si el tiempo del modo kernel sube rápidamente, el subproceso pasa la mayor parte de su tiempo en el sistema operativo y requiere la depuración del kernel para determinar la causa principal de este comportamiento.

  • Si el tiempo del kernel y el tiempo del usuario no aumentan rápidamente, es probable que el subproceso espere a que se devuelva una llamada API como WaitForSingleObject, Sleep, WriteFileo ReadFile . O bien, es posible que el sistema operativo no programe el subproceso. Por lo general, las condiciones de bloqueo de API requieren depuración en modo kernel para determinar su causa principal.

  • Si System Idle % es bajo y Process Utilization % es bajo, es posible que SQL Server no obtenga suficientes ciclos de CPU. Compruebe el uso de cpu de otras aplicaciones en el sistema. Además, compruebe si la paginación está ocurriendo en el sistema. La ejecución SELECT * FROM sys.dm_os_ring_buffers también puede proporcionar más detalles.

  • Si kernel + user los tiempos son bajos pero Process Utilization % son altos, la condición de error podría indicar que los subprocesos preventivos consumen toda la CPU (por ejemplo, la recolección de elementos no utilizados).

La combinación de información con el uso del sistema y el tiempo de inactividad puede proporcionar información sobre la naturaleza del problema.

Para comprender la lógica de detección y las razones comunes que generan esta condición de error, consulte Cómo diagnosticar y corregir errores 17883, 17884, 17887 y 17888.