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
,WriteFile
ouReadFile
à 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 etProcess 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écutionSELECT * FROM sys.dm_os_ring_buffers
peut également fournir plus de détails.Si
kernel + user
les temps sont faibles, maisProcess 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.