Partager via


Aperçu des événements étendus

S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance

L’architecture d’Extended Events (XEvents) permet aux utilisateurs de collecter autant ou aussi peu de données que nécessaire pour surveiller, identifier ou dépanner les performances dans SQL Server, la base de données Azure SQL et Azure SQL Managed Instance. Extended Events est hautement configurable, léger et évolue bien. Pour plus d’informations, consultez Extended Events Architecture.

Extended Events remplace les fonctionnalités obsolètes de SQL Trace et de SQL Server Profiler.

Pour commencer avec Extended Events, utilisez Quickstart : Extended Events.

Avantages des événements étendus

Extended Events est un système de monitoring des performances léger qui utilise des ressources système minimales tout en fournissant une vue détaillée et approfondie du moteur de base de données. SQL Server Management Studio fournit une interface utilisateur graphique pour les événements étendus permettant de créer, modifier et déposer des sessions d’événements et pour afficher et analyser les données de session. Pour en savoir plus sur la prise en charge d’Extended Events dans Management Studio, consultez :

Concepts liés à Extended Events

Extended Events s’appuie sur les concepts existants de Event Tracing pour Windows, tels que l’événement et le consommateur d’événements, et introduit de nouveaux concepts tels que l’action et le prédicat.

Le tableau suivant fournit des références de documentation pour comprendre les concepts d’Extended Events.

Article Description
Packages Extended Events Décrit les packages Événements étendus qui contiennent des objets. Ces objets sont utilisés pour obtenir et traiter les données lorsqu’une session d’événements étendus est en cours d’exécution.
Cibles pour les événements étendus Décrit les consommateurs d'événements qui peuvent recevoir des données au cours d'une session d'événements.
Moteur Extended Events Décrit le moteur qui implémente et gère une session Événements étendus.
Sessions d’événements étendus Décrit la session d'événements étendus.

Architecture d’Extended Events

Les événements étendus est un nom pour un système général de gestion d’événements général pour les systèmes serveur. L’infrastructure d’Extended Events prend en charge la corrélation des données du moteur de base de données et, dans certaines conditions, la corrélation des données du système d’exploitation et des applications de base de données. Dans le cas de données provenant du système d’exploitation, la sortie des Événements étendus doit être dirigée vers le Suivi d’événements pour Windows (ETW), afin de mettre en corrélation les données d’événement avec les données d’événement du système d’exploitation ou des applications.

Toutes les applications ont des points d'exécution qui sont utiles aussi bien à l'intérieur qu'à l'extérieur d'une application. Au sein de l'application, le traitement asynchrone peut être mis en attente à l'aide d'informations collectées au cours de l'exécution initiale d'une tâche. En dehors de l’application, les points d’exécution fournissent des utilitaires d’analyse avec des informations sur les caractéristiques comportementales et de performances de l’application analysée.

Les événements étendus prennent en charge l'utilisation de données d'événement à l'extérieur d'un processus. Ces données sont généralement utilisées par les utilisateurs qui gèrent ou prennent en charge un produit en procédant à une supervision des performances, ou par les utilisateurs qui développent des applications sur un produit à des fins de débogage. Les données sont consommées ou analysées à l’aide d’outils tels que SQL Server Management, XEvent Profiler, l’Analyseur de performances, et T-SQL ou les outils en ligne de commande Windows.

Les événements étendus présentent les aspects de conception clés suivants :

  • Le moteur d'événements étendus est agnostique en termes d'événements, Cela permet au moteur de lier tout événement à toute cible, car le moteur n’est pas contraint par le contenu des événements. Pour plus d’informations sur le moteur d’Extended Events, consulter Moteur d’Extended Events.
  • Les événements sont séparés des consommateurs d'événements, appelés cibles dans les événements étendus. Cela signifie que toute cible peut recevoir tout événement. De plus, tout événement déclenché peut être automatiquement consommé par la cible, qui peut enregistrer dans le journal ou fournir un contexte d'événement supplémentaire. Pour plus d'informations, consultez Cibles des Événements étendus.
  • Les événements sont distincts de l'action à entreprendre lorsqu'un événement se produit. Par conséquent, toute action peut être associée à tout événement.
  • Les prédicats peuvent filtrer dynamiquement lorsque les données d'événement doivent être capturées. Le filtrage dynamique s’ajoute à la flexibilité de l’infrastructure Événements étendus. Pour plus d’informations, consultez Packages Extended Events.

Extended Events peut générer de façon synchrone des données d'événement (et les traiter de façon asynchrone), ce qui fournit une solution flexible de gestion des événements. De plus, les événements étendus fournissent les fonctionnalités suivantes :

  • une approche unifiée de la gestion des événements sur le système serveur, tout en permettant aux utilisateurs d'isoler des événements spécifiques dans le but de résoudre des problèmes ;
  • l'intégration avec les outils existants de suivi ETW et la prise en charge de ces derniers ;
  • Un mécanisme de gestion des événements entièrement configurable qui utilise Transact-SQL.
  • la capacité de surveiller dynamiquement les processus actifs tout en ayant un impact minime sur ces processus.
  • une session de l'intégrité du système par défaut qui s'exécute sans effet de performance notable ; Elle recueille des données système qui peuvent vous aider à résoudre des problèmes de performances. Pour plus d’informations, consultez Utiliser la session system_health.

Tâches relatives à Extended Events

En utilisant Management Studio ou Transact-SQL pour exécuter des instructions DDL (Data Definition Language) Transact-SQL, ou pour consommer des vues, des fonctions de gestion dynamiques ou des affichages catalogue, vous pouvez créer des solutions de dépannage des événements étendus SQL Server simples ou complexes pour votre environnement SQL Server.

Description de la tâche Article
Utilisez l' Explorateur d'objets pour gérer les sessions d'événements. Gérer les sessions d’événements dans l’Explorateur d’objets
Explique comment créer une session d'événements étendus. Sessions d’événements étendus
Explique comment afficher et actualiser des données cibles. Afficher les données d’événement dans SQL Server Management Studio
Explique comment utiliser des outils d'événements étendus pour créer et gérer vos sessions d'événements étendus . Outils associés aux événements étendus
Explique comment altérer une session d'événements étendus. Modifier une session d’événements étendus
Explique comment obtenir des informations sur les champs associés aux événements. Obtenir les champs pour tous les événements
Explique comment déterminer quels sont les événements disponibles dans les packages enregistrés. Utilisation de SELECT et JOIN dans les vues système pour les événements étendus dans SQL Server
Explique comment déterminer quelles cibles d'événements étendus sont disponibles dans les packages enregistrés. Cibles pour les événements étendus
Explique comment afficher les événements Événements étendus et les actions qui sont équivalents à chaque événement SQL Trace et à ses colonnes associées. Consulter les événements étendus équivalents aux classes d’événements Trace SQL
Décrit comment trouver les paramètres que vous pouvez définir lorsque vous utilisez la clause ADD TARGET dans les instructions CREATE EVENT SESSION ou ALTER EVENT SESSION. Cibles pour les événements étendus
Explique comment convertir un script Trace SQL existant en session d'événements étendus. Convertir un script Trace SQL existant en session d’événements étendus
Explique comment déterminer quelles requêtes détiennent le verrou, le plan de la requête et la pile Transact-SQL au moment où le verrou a été mis. Déterminer quelles requêtes détiennent des verrous
Décrit comment identifier la source des verrous. Trouver les objets comportant le plus de verrous
Explique comment utiliser les événements étendus avec le suivi d'événements pour Windows pour surveiller l'activité système. Superviser l’activité système à l’aide d’événements étendus
Utilisation des vues de catalogue et des vues de gestion dynamique (DMV) pour Extended Events Utilisation de SELECT et JOIN dans les vues système pour les événements étendus dans SQL Server

Utilisez la requête T-SQL suivante pour renvoyer tous les événements possibles et leurs descriptions :

SELECT obj1.name AS [XEvent-name],
    col2.name AS [XEvent-column],
    obj1.description AS [Descr-name],
    col2.description AS [Descr-column]
FROM sys.dm_xe_objects AS obj1
INNER JOIN sys.dm_xe_object_columns AS col2
    ON col2.object_name = obj1.name
ORDER BY obj1.name,
    col2.name

Les exemples de code peuvent différer pour Azure SQL Database et SQL Managed Instance

Certains exemples de code Transact-SQL écrits pour SQL Server ont besoin de changements mineurs pour s’exécuter sur Azure. Une catégorie de ces exemples de code implique des affichages catalogue dont les préfixes de nom diffèrent selon le type de moteur de base de données :

  • server_ -  : préfixe pour SQL Server et Azure SQL Managed Instance
  • database_ -  : préfixe pour Azure SQL Database et SQL Managed Instance

Azure SQL Database prend en charge uniquement les sessions d’événement incluses dans l’étendue de la base de données. SQL Server Management Studio (SSMS) prend complètement en charge les sessions d’événement incluses dans l’étendue de la base de données pour Azure SQL Database : un nœud Événements étendus contenant des sessions incluses dans l’étendue de la base de données apparaît sous chaque base de données dans Explorateur d’objets.

Azure SQL Managed Instance prend en charge les sessions incluses dans l’étendue de la base de données et les sessions incluses dans l’étendue du serveur. SSMS prend complètement en charge les sessions incluses dans l’étendue du serveur pour SQL Managed Instance : un nœud Événements étendus contenant toutes les sessions incluses dans l’étendue du serveur apparaît sous le dossier Gestion de chaque instance gérée dans Explorateur d'objets.

Remarque

Les sessions incluses dans l’étendue du serveur sont recommandées pour les instances gérées. Les sessions incluses dans l’étendue de la base de données ne sont pas affichées dans Explorateur d’objets dans SSMS pour Azure SQL Managed Instance. Les sessions incluses dans l’étendue de la base de données peuvent uniquement être interrogées et gérées avec Transact-SQL lors de l’utilisation d’une instance gérée.

À titre d’illustration, le tableau suivant liste et compare deux sous-ensembles d’affichages catalogue. Par souci de concision, les sous-ensembles sont limités aux noms de vues qui contiennent également la chaîne _event. Les sous-ensembles ont des préfixes de noms différents car ils prennent en charge des types de moteur de base de données différents.

Nom dans SQL Server et Azure SQL Managed Instance Nom dans Azure SQL Database et Azure SQL Managed Instance
server_event_notifications
server_event_notifications
server_event_notifications
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions

Les deux listes du tableau précédent sont exactes à compter de mars 2022. Pour obtenir une liste à jour, exécutez l’instruction Transact-SQL SELECT suivante :

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;