Aperçu des événements étendus

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

L’architecture Des événements étendus (XEvents) permet aux utilisateurs de collecter autant ou moins de données que nécessaire pour surveiller, identifier ou résoudre les problèmes de performances dans SQL Server, Azure SQL Database et Azure SQL Managed Instance. Les événements étendus sont hautement configurables, légers et mis à l’échelle correctement. Pour plus d’informations, consultez Architecture des événements étendus.

Les événements étendus remplacent les fonctionnalités sql Trace et SQL Server Profiler déconseillées.

Pour bien démarrer avec les événements étendus, utilisez le guide de démarrage rapide : Événements étendus.

Remarque

Si vous utilisez Azure SQL, découvrez comment les exemples de code peuvent différer pour Azure SQL Database et SQL Managed Instance , et plus d’informations sur les événements étendus dans Azure SQL Database.

Avantages des événements étendus

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

Concepts des événements étendus

Les événements étendus s’appuient sur les concepts existants du suivi d’événements pour Windows, tels que le consommateur d’événements et 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 des événements étendus.

Article Description
Packages d’événements étendus 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 d’événements étendus 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 des événements étendus

Les événements étendus sont un nom pour un système de gestion des événements général pour les systèmes serveurs. L’infrastructure Événements étendus 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. Dans l’application, le traitement asynchrone peut être mis en file d’attente à l’aide d’informations collectées pendant 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 Studio, XEvent Profiler et Analyseur de performances, et les outils en ligne de commande T-SQL ou 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, Le moteur peut lier n’importe quel événement à n’importe quelle cible, car le moteur n’est pas limité par le contenu de l’événement. Pour plus d’informations sur le moteur d’événements étendus, consultez le moteur d’événements étendus.
  • 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 pour les é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 les packages d’événements étendus.

Les événements étendus peuvent générer de manière synchrone des données d’événement (et traiter de manière asynchrone ces données), ce qui fournit une solution flexible pour la 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 ;
  • 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 d’événements étendus

À l’aide de Management Studio ou Transact-SQL pour exécuter des instructions DDL (Transact-SQL Data Definition Language), consommez des vues et fonctions de gestion dynamique ou des vues catalogue, vous pouvez créer des solutions de résolution des problèmes d’é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 rechercher les paramètres que vous pouvez définir lorsque vous utilisez la ADD TARGET clause dans CREATE EVENT SESSION ou ALTER EVENT SESSION les instructions. 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
Décrit comment déterminer les requêtes qui tiennent le verrou, le plan de la requête et la pile Transact-SQL au moment où le verrou a été effectué. 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 affichages catalogue et des vues de gestion dynamique (DMV) pour les événements étendus 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 retourner 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 nécessitent de petites modifications à exécuter dans Azure. Une catégorie de ces exemples de code implique des vues de 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 uniquement en charge les sessions d’événements délimitées à la base de données. SQL Server Management Studio (SSMS) prend entièrement en charge les sessions d’événements délimitées à la base de données pour Azure SQL Database : un nœud Événements étendus contenant des sessions délimitées à la base de données apparaît sous chaque base de données de l’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 délimitées à la base de données ne sont pas affichées dans l’Explorateur d’objets dans SSMS pour Azure SQL Managed Instance. Les sessions délimitées à la base de données peuvent uniquement être interrogées et gérées avec Transact-SQL lors de l’utilisation d’une instance managée.

Pour illustration, le tableau suivant répertorie et compare deux sous-ensembles de vues de 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 nom différents, car ils prennent en charge différents types de moteur de base de données.

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;