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 :
Le sql_text et le session_id pour les sessions qui rencontrent une erreur de gravité >= 20.
Le sql_text et le session_id pour les sessions qui rencontrent une erreur relative à la mémoire. Il s'agit des erreurs 17803, 701, 802, 8645, 8651, 8657 et 8902.
L'historique des problèmes d'improductivité du planificateur. (Ceux-ci s'affichent dans le journal des erreurs SQL Server sous l'erreur 17883).
Les interblocages détectés.
Les callstack, sql_text et session_id des sessions ayant attendu des verrous (ou d'autres ressources pertinentes) > 15 secondes.
Les callstack, sql_text et session_id des sessions ayant attendu des verrous > 30 secondes.
Les callstack, sql_text et 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 des 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 du programme SQL Server :
C:\Program Files\Microsoft SQL Server\MSSQL11.<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.