Partager via


MSSQLSERVER_17883

S’applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 17883
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique SRV_SCHEDULER_NONYIELDING
Texte du message Le processus %ld:%ld:%ld (0x%lx) travail 0x%p semble être improductif dans le Planificateur %ld. Heure de création du thread : %I64d. Utilisation approximative de l'UC pour ce thread : noyau %I64d ms, utilisateur %I64d ms. Utilisation du processus %d%%. Système inactif %d%%. Intervalle : %I64d ms.

Explication

Indique qu’il existe un problème possible avec un thread qui ne génère pas sur un planificateur. Cette erreur peut être due à une condition de système d’exploitation, à un problème d’environnement ou à un problème logiciel dans SQL Server, ou si SQL Server n’obtient pas suffisamment de cycles pour s’exécuter. Cette erreur peut disparaître si le thread finit par produire.

Action utilisateur

Si vous examinez les informations du message d’erreur, vous voyez que certains comportements émergent. Par exemple :

  • Si le temps de mode utilisateur monte rapidement et continue de le faire, la cause probable est une boucle sans liaison dans le moteur SQL Server qui ne génère pas correctement.

  • Si le temps du mode noyau monte rapidement, le thread passe le plus de temps dans le système d’exploitation et nécessite le débogage du noyau pour déterminer la cause racine de ce comportement.

  • Si l’heure du noyau et l’heure utilisateur ne augmentent pas rapidement, le thread attend probablement un appel d’API tel que WaitForSingleObject, Sleep, WriteFileou ReadFile à retourner. Ou bien, le thread peut ne pas être planifié par le système d’exploitation. Les conditions de blocage de l’API nécessitent généralement le débogage en mode noyau pour déterminer leur cause racine.

  • Si System Idle % elle est faible et Process Utilization % est faible, SQL Server risque de ne pas obtenir suffisamment de cycles processeur. Vérifiez l’utilisation du processeur d’autres applications sur le système. Vérifiez également si la pagination se passe dans le système. L’exécution SELECT * FROM sys.dm_os_ring_buffers peut également fournir plus de détails.

  • Si kernel + user les temps sont faibles, mais Process Utilization % est élevé, la condition d’erreur peut indiquer que les threads préemptifs consomment tout le processeur (par exemple, garbage collection).

La combinaison d’informations avec l’utilisation du système et le temps d’inactivité peut fournir un aperçu de la nature du problème.

Pour comprendre la logique de détection et les raisons courantes qui génèrent cette condition d’erreur, reportez-vous à How To Diagnose and Correct Errors 17883, 17884, 17887 et 17888.