Vue d’ensemble des événements étendus
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
L’architecture des événements étendus permet aux utilisateurs de collecter autant ou peu de données que nécessaire pour résoudre ou identifier un problème de performances dans SQL Server, Azure SQL Base de données et Azure SQL Managed Instance. Les événements étendus sont hautement configurables, légers et sont très bien mis à l’échelle. Pour plus d’informations, consultez Architecture des événements étendus.
Les événements étendus remplacent les fonctionnalités de trace SQL et de SQL Server Profiler déconseillées.
Essayez XEvents : Démarrage rapide : Événements étendus dans SQL Server.
Notes
Azure SQL Database prend en charge uniquement les sessions incluses dans l’étendue de la base de données. Découvrez comment les exemples de code peuvent différer pour Azure SQL Base de données et SQL Managed Instance et bien plus encore sur les événements étendus dans Azure SQL Database.
Avantages des événements étendus SQL Server
Les événements étendus sont un système léger d’analyse des performances qui utilise très peu de ressources de performances. SQL Server Management Studio fournit une interface utilisateur graphique pour les événements étendus permettant de créer et de modifier des sessions, ainsi que d’afficher et d’analyser les données de session. Ici, vous pouvez en savoir plus sur ces extensions :
Concepts des événements étendus
SQL Server Événements étendus s’appuie sur des concepts existants, tels qu’un événement ou un consommateur d’événements, utilise les concepts du suivi d’événements pour Windows et introduit de nouveaux concepts.
Le tableau suivant décrit les concepts des événements étendus.
Rubrique | Description |
---|---|
Packages d’événements étendus SQL Server | 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 des Événements étendus SQL Server | Décrit les consommateurs d'événements qui peuvent recevoir des données au cours d'une session d'événements. |
Moteur des événements étendus SQL Server | Décrit le moteur qui implémente et gère une session Événements étendus. |
Sessions d’événements étendus SQL Server | Décrit la session d'événements étendus. |
Architecture des événements étendus
Les événements étendus représentent un système de gestion d’événements général pour les systèmes serveur. L’infrastructure Des événements étendus prend en charge la corrélation des données de SQL Server 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 XEvent Profiler, l’Analyseur de performances, 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'événements étendus, consultez SQL Server Extended Events Engine.
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 SQL Server Extended Events Targets.
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 SQL Server Extended Events Packages.
Les événements étendus peuvent générer de façon synchrone des données d'événement (et traiter de façon asynchrone ces données), 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 ;
Mécanisme de gestion des événements entièrement configurable basé sur 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
En utilisant Management Studio ou Transact-SQL pour exécuter des instructions DDL (Transact-SQL Data Definition Language), consommer des vues et des fonctions de gestion dynamique ou des vues de catalogue, vous pouvez créer des solutions simples ou complexes SQL Server de résolution des problèmes des événements étendus 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. | Créer une session d’événements étendus |
Explique comment afficher et actualiser des données cibles. | Affichage avancé des données cibles d’événements étendus dans SQL Server |
Décrit comment utiliser les outils d’événements étendus pour créer et gérer vos sessions d’événements étendus SQL Server. | 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. | Consulter les événements pour les packages enregistrés |
Explique comment déterminer quelles cibles d'événements étendus sont disponibles dans les packages enregistrés. | Afficher les cibles d’événements étendus pour les packages enregistrés |
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 |
Explique comment rechercher les paramètres que vous pouvez définir lorsque vous utilisez l'argument ADD TARGET dans CREATE EVENT SESSION ou ALTER EVENT SESSION. | Obtenir les paramètres configurables pour l’argument ADD TARGET |
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 dé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 |
Explique comment identifier la source des verrous qui gênent les performances de la base de données. | 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. | Surveiller l’activité système à l’aide d’événements étendus |
Utilisation des vues 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 Transact-SQL (T-SQL) suivante pour répertorier 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
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 local ont besoin de changements mineurs pour s’exécuter sur le cloud. Une catégorie de ces exemples de code implique des vues système dont les préfixes de noms diffèrent légèrement entre les deux systèmes 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 incluses dans l’étendue de la base de données. SQL Server Management Studio (SSMS) prend complètement en charge les sessions 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. Les sessions incluses dans l’étendue du serveur sont recommandées pour les instances gérées. 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.
Notes
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 de vues système. 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 parce qu’ils proviennent de deux systèmes de bases de données différents.
Nom à partir de SQL Server | Nom du service cloud |
---|---|
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 exacte, exécutez l’instruction Transact-SQL SELECT suivante :
SELECT name
FROM sys.all_objects
WHERE
(name LIKE 'database\_%' { ESCAPE '\' } OR
name LIKE 'server\_%' { ESCAPE '\' })
AND name LIKE '%\_event%' { ESCAPE '\' }
AND type = 'V'
ORDER BY name;
Voir aussi
- Vues de gestion dynamique des Événements étendus
- Affichages catalogue des événements étendus (Transact-SQL)
- Mystères SQL : suivi de causalité et séquence d’événements pour les sessions XEvent
- Analyser et empêcher les blocages dans Azure SQL Database
Étapes suivantes
- Démarrage rapide : Événements étendus dans SQL Server
- Code cible du fichier d’événements pour les événements étendus dans Azure SQL Base de données
- Événements étendus dans une base de données SQL Azure
- XELite : bibliothèque multiplateforme pour lire des événements XEvent à partir de fichiers XEL ou de flux SQL dynamiques, publiée en mai 2019.
- Applet de commande PowerShell Read-SQLXEvent, publiée en juin 2019.