Partager via


Utiliser la session system_health

La session system_health est une session Événements étendus incluse par défaut avec SQL Server. Cette session démarre automatiquement en même temps que le Moteur de base de données SQL Server et s’exécute sans effet notable sur les performances. Elle recueille des données système qui peuvent vous aider à résoudre des problèmes de performances dans le Moteur de base de données. Il est donc déconseillé de l'arrêter ou de la supprimer.

Cette session recueille des informations, dont les suivantes :

  • Les sql_text et session_id pour toutes les sessions qui rencontrent une erreur dont la gravité >est =20.

  • Le sql_text et le session_id des sessions qui rencontrent une erreur de mémoire. Il s'agit des erreurs 17803, 701, 802, 8645, 8651, 8657 et 8902.

  • L'historique des problèmes d'improductivité du planificateur. (Celles-ci apparaissent dans le journal des erreurs SQL Server sous la forme de l’erreur 17883.)

  • Les interblocages détectés.

  • La pile d’appels, sql_text et session_id pour toutes les sessions qui ont attendu sur des latchs (ou d’autres ressources intéressantes) pendant > 15 secondes.

  • La pile d’appels, sql_text et session_id pour toutes les sessions qui ont attendu des verrous pendant > 30 secondes.

  • Le callstack, le sql_text et le session_id des sessions ayant attendu longtemps des attentes préemptives. La durée varie selon le type d'attente. Une attente préemptive est une situation où SQL Server attend des appels d'API externes.

  • callstack et session_id pour l'allocation CLR et les échecs d'allocation virtuelle.

  • Les événements ring_buffer pour le gestionnaire d'allocation mémoire, le moniteur du planificateur, l'insuffisance mémoire du nœud de mémoire, la sécurité et la connectivité.

  • Résultats des composants système depuis sp_server_diagnostics.

  • Intégrité de l'instance recueillie par scheduler_monitor_system_health_ring_buffer_recorded.

  • Échecs d'allocation CLR

  • Erreurs de connectivité avec connectivity_ring_buffer_recorded.

  • Erreurs de sécurité avec security_error_ring_buffer_recorded.

Consultation des données de session

La session utilise la cible de mémoire tampon en anneau pour stocker les données. Pour consulter les données de session, utilisez la requête suivante :

SELECT CAST(xet.target_data as xml) FROM sys.dm_xe_session_targets xet  
JOIN sys.dm_xe_sessions xe  
ON (xe.address = xet.event_session_address)  
WHERE xe.name = 'system_health'  

Pour afficher les données de session depuis les fichier d'événements, utilisez l'interface utilisateur Événements étendus disponible dans Management Studio. Pour plus d’informations, consultez Afficher les données de session d’événements .

Restauration de la session system_health

Si vous supprimez la session system_health, vous pouvez la restaurer en exécutant le fichier u_tables.sql dans l’Éditeur de requête. Ce fichier se trouve dans le dossier suivant, où C: représente le lecteur sur lequel vous avez installé les fichiers programme SQL Server :

C:\Program Files\Microsoft SQL Server\MSSQL12.<Instanceid>\MSSQL\Install

Sachez qu’après avoir restauré la session, vous devez la démarrer en utilisant l’instruction ALTER EVENT SESSION ou en utilisant le nœud Événements étendus dans l’Explorateur d’objets. Sinon, la session démarre automatiquement la prochaine fois que vous redémarrerez le service SQL Server .

Voir aussi

Outils associés aux événements étendus