Utiliser la session system_health

S’applique à :SQL Server Azure SQL Managed Instance

La session system_health est une session Extended Events incluse par défaut avec SQL Server et Azure SQL Managed Instance. Cette session démarre automatiquement en même temps que le moteur de base de données et fonctionne sans aucune surcharge de performance notable. 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.

Important

Nous vous recommandons de ne pas arrêter, modifier ou supprimer la session system_health. Tout changement apporté aux paramètres de la session system_health peut être remplacé par une mise à jour future du produit.

Cette session recueille des informations, qui comprennent les informations suivantes :

  • Le sql_text et le session_id pour toutes les sessions qui rencontrent une erreur qui a une gravité > = 20.
  • Le sql_text et le session_id pour toutes les 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. Ceux-ci s’affichent dans le journal des erreurs de SQL Server sous l’erreur 17883.
  • Tous les blocages qui sont détectés, y compris le graphique de blocage.
  • Le callstack, sql_text et session_id pour toutes les sessions ayant attendu des verrous (ou d’autres ressources pertinentes) pendant > 15 secondes.
  • Le callstack, sql_text et session_id pour toutes les sessions ayant attendu des verrous pendant > 30 secondes.
  • Le callstack, sql_text et session_id pour toutes les 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.
  • Le callstack et le session_id pour l’allocation CLR et les échecs d’allocation virtuelle.
  • Les événements de mémoire tampon en anneau 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 à partir de sp_server_diagnostics.
  • Intégrité de l’instance collectée 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.

Remarque

Pour plus d’informations sur les interblocages, consultez le Guide des interblocages. Pour plus d’informations sur les messages d’erreur SQL, consultez Événements et erreurs du moteur de base de données.

Afficher les données de session system_health

La session utilise à la fois la cible de mémoire tampon en anneau et la cible de fichier d’événements pour stocker les données. La cible de fichier d’événements est configurée avec une taille maximale de 5 Mo et une stratégie de rétention de fichier de 4 fichiers.

Pour afficher les données de session à partir de la cible de mémoire tampon en anneau avec l’interface utilisateur Extended Events disponible dans SQL Server Management Studio, consultez Affichage avancé des données cibles d’Extended Events dans SQL Server - Surveiller les données actives.

Pour afficher les données de session à partir de la cible de mémoire tampon en anneau avec Transact-SQL, utilisez la requête suivante :

SELECT CAST(xet.target_data as xml) AS target_data
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 à partir du fichier d’événements, utilisez l’interface utilisateur de l’observateur d’Extended Events disponible dans SQL Server Management Studio. Pour plus d'informations, consultez Afficher les données d'événements dans SQL Server Management Studio.

Restaurer la session system_health

Si vous supprimez la session system_health, vous pouvez la restaurer en exécutant le script u_tables.sql. 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 et MSSQLnn la version principale de SQL Server :

C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install

Après avoir restauré la session, vous devez la démarrer à l’aide de l’instruction ALTER EVENT SESSION ou à l’aide du nœud Extended Events dans l’Explorateur d’objets. Sinon, la session démarre automatiquement la prochaine fois que vous redémarrerez le service SQL Server.

La session system_health dans Azure SQL

Dans Azure SQL Managed Instance, les données de la session system_health peuvent être consultées en cliquant avec le bouton droit sur la cible event_file ou ring_buffer dans l'Explorateur d'objets, puis en sélectionnant Afficher les données cibles.

Il n’existe aucune session d’Extended Events intégrée system_health dans la base de données Azure SQL, mais vous pouvez utiliser la fonction sys.fn_xe_file_target_read_file() pour lire à partir de sessions d’événements étendus que vous créez vous-même et stockez dans Stockage Azure. Pour une présentation, consultez Code cible du fichier d’événements pour Extended Events dans la base de données Azure SQL.