Utiliser la session system_health

S’applique à :SQL ServerAzure SQL Managed Instance

La system_health session est une session Événements étendus incluse par défaut avec SQL Server et Azure SQL Managed Instance. Cette session démarre automatiquement lorsque le Moteur de base de données démarre et s’exécute sans surcharge de performances notable. La session collecte les données système que vous pouvez utiliser pour résoudre les 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 system_health session. Toutes les modifications apportées aux paramètres de system_health session peuvent être remplacées par une prochaine mise à jour du produit.

La session collecte des informations qui incluent les informations suivantes :

  • session_id Et sql_text pour toutes les sessions qui rencontrent une erreur ayant une gravité >= 20.
  • session_id Pour sql_text toutes les sessions qui rencontrent une erreur liée à 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. Celles-ci apparaissent dans le journal des erreurs SQL Server en tant qu’erreur 17883.
  • Tous les blocages qui sont détectés, y compris le graphique de blocage.
  • Le callstack, sql_textet session_id pour toutes les sessions qui ont attendu sur des verrous (ou d’autres ressources intéressantes) pendant > 15 secondes.
  • Le callstack, sql_textet session_id pour toutes les sessions qui ont attendu sur les verrous pendant > 30 secondes.
  • Le callstack, sql_textet session_id pour toutes les sessions qui ont attendu pendant un certain temps pour les attentes préemptives. La durée varie selon le type d'attente. Une attente préemptive est l’endroit où SQL Server attend les appels d’API externes.
  • session_id Échecs callstack d’allocation clR et 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 Connecter ivity à l’aide connectivity_ring_buffer_recordedde .
  • Erreurs de sécurité à l’aide security_error_ring_buffer_recordedde .

Remarque

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

Afficher les données de session system_health

La session utilise à la fois la cible de mémoire tampon en anneau et la cible du 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 de la cible de mémoire tampon en anneau avec l’interface utilisateur Événements étendus disponibles dans SQL Server Management Studio, consultez l’affichage avancé des données cibles à partir d’événements étendus dans SQL Server - Regarder les données actives.

Pour afficher les données de session 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’événements d’événements étendus disponible dans SQL Server Management Studio. Pour plus d’informations, consultez Afficher les données d’événement dans SQL Server Management Studio.

Restaurer la session system_health

Si vous supprimez la system_health session, vous pouvez la restaurer en exécutant le u_tables.sql script. Ce fichier se trouve dans le dossier suivant, où C: représente le lecteur où vous avez installé les fichiers 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 Événements étendus dans l’Explorateur d’objets. Sinon, la session démarre automatiquement la prochaine fois que vous redémarrez le service SQL Server.

Session system_health dans Azure SQL

Dans Azure SQL Managed Instance, les system_health données de session peuvent être consultées en cliquant avec le bouton droit sur l’Explorateur d’objets ou ring_buffer en sélectionnant event_fileAfficher les données cibles.

Il n’existe aucune session d’événements étendus intégrée system_health dans Azure SQL Database, mais vous pouvez utiliser la sys.fn_xe_file_target_read_file() fonction pour lire à partir de sessions d’événements étendus que vous créez vous-même et stockez dans Stockage Azure. Pour obtenir une procédure pas à pas, consultez le code cible du fichier d’événements pour les événements étendus dans Azure SQL Database.