Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Cet article explique les deux ensembles de vues système liées aux événements étendus. L’article explique :
- Guide pratique pour
JOINdifférentes vues système. - Comment extraire certains types d'informations des vues système à
SELECT.
Il existe deux ensembles de vues système pour Extended Events :
Affichages catalogue
- Ces vues stockent des informations sur la définition de chaque session d’événements créée par CREATE EVENT SESSION (Transact-SQL). Ces vues ignorent si une session a démarré.
- Par exemple, si l’Explorateur d’objets SSMS n’affiche pas que aucune session d’événements n’est définie, effectuer une sélection à partir de la vue
sys.server_event_session_targetsretournerait zéro ligne.
- Par exemple, si l’Explorateur d’objets SSMS n’affiche pas que aucune session d’événements n’est définie, effectuer une sélection à partir de la vue
- La plupart des exemples sont écrits pour SQL Server et Azure SQL Managed Instance. Toutefois, avec des modifications mineures, elles s’exécuteraient sur Azure SQL Database et sur une base de données SQL dans Fabric en modifiant le nom de la DMV de
serveràdatabase:-
sys.server_event_session*est le préfixe de nom sur SQL Server et Azure SQL Managed Instance. -
sys.database_event_session*est le préfixe de nom sur Azure SQL Database et la base de données SQL dans Fabric. - Pour plus d’informations sur chacun d’eux, consultez vues catalogue des événements étendus.
-
Vues de gestion dynamique (DMVs)
Elles stockent des informations sur l’ activité en cours des sessions d’événements en cours d’exécution. Ces DMV en savent peu sur la définition des sessions.
- Même si toutes les sessions d'événements sont actuellement arrêtées, un
SELECTde la vuesys.dm_xe_packagesretourne toujours des lignes, car différents packages sont chargés en mémoire active lorsque le serveur démarre. - Pour la même raison,
sys.dm_xe_objectsetsys.dm_xe_object_columnsretournent encore des lignes.
- Même si toutes les sessions d'événements sont actuellement arrêtées, un
Le préfixe de nom pour les DMV d’Extended Events est le suivant :
-
sys.dm_xe_*est le préfixe de nom sur SQL Server et Azure SQL Managed Instance. -
sys.dm_xe_database_*est généralement le préfixe de nom sur Azure SQL Database et la base de données SQL dans Fabric.
-
Permissions
Pour accéder aux SELECT vues système, l’autorisation suivante est nécessaire :
- SQL Server 2019 (15.x) et les versions précédentes nécessitent
VIEW SERVER STATEune autorisation sur le serveur. - SQL Server 2022 (16.x) et versions ultérieures nécessitent
VIEW SERVER PERFORMANCE STATEune autorisation sur le serveur. - Azure SQL Database et SQL Database dans Fabric nécessitent
VIEW DATABASE PERFORMANCE STATEune autorisation dans la base de données.
Affichages catalogue
Pour les besoins de cette page, créez une session Événements étendus avec SSMS ou T-SQL. Installez la dernière version de SQL Server Management Studio (SSMS).
Créer une session dans SQL Server Management Studio (SSMS)
Dans SSMS, dans l’Explorateur d’objets, vous pouvez démarrer la boîte de dialogue Nouvelle session en développantles événements étendus>, puis cliquer avec le bouton droit sur Sessions>Nouvelle session.
Dans la grande boîte de dialogue Nouvelle session , dans la première section intitulée Général, nous constatons que l’option Démarrer la session d’événements au démarrage du serveura été sélectionnée.
Ensuite, dans la section Événements , nous voyons que l’événement lock_deadlock a été choisi. Pour cet événement, nous voyons que trois Actions ont été sélectionnées. Cela signifie que le bouton Configurer a été sélectionné, ce qui devient gris après avoir été sélectionné.
Ensuite, toujours dans la section Events>Configure , nous voyons que resource_type a été défini sur PAGE. Cela signifie que les données d’événement ne seront pas envoyées du moteur d’événements à la cible si la valeur resource_type est autre que PAGE.
Nous constatons la présence de filtres de prédicat supplémentaires pour le nom de base de données et pour un compteur.
Ensuite, dans la section Stockage de données, nous constatons qu’event_file a été choisi comme cible. En outre, nous constatons que l’option Activer la substitution de fichier a été sélectionnée.
Pour finir, dans la section Avancé, nous constatons que la valeur de Latence maximale de répartition a été réduite à quatre secondes.
Créer une session d’événements dans T-SQL
Quelle que soit la façon dont une définition de session d’événements est créée, à partir de SSMS, la session peut être inversée dans un script Transact-SQL parfaitement correspondant. Vous pouvez examiner les captures d’écran de nouvelle session précédentes et comparer leurs spécifications visibles aux clauses du script T-SQL CREATE EVENT SESSION généré suivant.
Pour inverser l’ingénierie d’une session d’événements, dans l’Explorateur d’objets , vous pouvez cliquer avec le bouton droit sur votre nœud de session, puis choisir Session de script comme>CREATE dans ** >Presse-papiers.
CREATE EVENT SESSION [event_session_test3]
ON SERVER -- Or, if on Azure SQL Database, ON DATABASE.
ADD EVENT sqlserver.lock_deadlock
(
SET
collect_database_name = (1)
ACTION
(
package0.collect_system_time,
package0.event_sequence,
sqlserver.client_hostname
)
WHERE
(
[database_name] = N'InMemTest2'
AND [package0].[counter] <= (16)
AND [resource_type] = (6)
)
)
ADD TARGET package0.event_file
(
SET
filename = N'c:\temp\\event_session_test3_EF.xel',
max_file_size = (20),
max_rollover_files = (2)
)
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 4 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
);
Vue du catalogue SELECT JOIN UNION
L’instruction T-SQL SELECT suivante est longue uniquement parce qu’elle UNION plusieurs petits SELECT ensemble. Chaque petite instruction SELECT peut être exécutée individuellement. Les petites instructions SELECT montrent comment les différents affichages catalogue système doivent être joints.
SELECT
s.name AS [Session-Name],
'1_EVENT' AS [Clause-Type],
'Event-Name' AS [Parameter-Name],
e.name AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'2_EVENT_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'3_EVENT_ACTION' AS [Clause-Type],
a.package + '.' + a.name
AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_actions As a
ON a.event_session_id = s.event_session_id
AND a.event_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'4_EVENT_PREDICATES' AS [Clause-Type],
e.predicate AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'5_TARGET' AS [Clause-Type],
t.name AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'6_TARGET_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = t.target_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_MAX_MEMORY' AS [Clause-Type],
'max_memory' AS [Parameter-Name],
s.max_memory AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_STARTUP_STATE' AS [Clause-Type],
'startup_state' AS [Parameter-Name],
s.startup_state AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
ORDER BY
[Session-Name],
[Clause-Type],
[Parameter-Name]
;
Sortie
Le tableau suivant montre la sortie de l'exécution de l'exemple précédent SELECT JOIN UNION. Les noms et valeurs des paramètres de sortie correspondent à ce qui est visible de manière simple dans l’instruction précédente CREATE EVENT SESSION .
| Nom de session | Type de clause | Nom du paramètre | Valeur du paramètre |
|---|---|---|---|
event_session_test3 |
1_EVENT | Event-Name | lock_deadlock |
event_session_test3 |
2_EVENT_SET | collect_database_name | 1 |
event_session_test3 |
3_EVENT_ACTION | sqlserver.client_hostname | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.collect_system_time | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.event_sequence | (Not_Applicable) |
event_session_test3 |
4_EVENT_PREDICATES | ([sqlserver].[equal_i_sql_unicode_string]([database_name],N'InMemTest2') AND [package0].[compteur]<=(16)) |
(Not_Applicable) |
event_session_test3 |
5_TARGET | event_file | (Not_Applicable) |
event_session_test3 |
6_TARGET_SET | nom_fichier | c :\temp\event_session_test3_EF.xel |
event_session_test3 |
6_TARGET_SET | max_file_size | 20 |
event_session_test3 |
6_TARGET_SET | max_rollover_files | 2 |
event_session_test3 |
7_WITH_MAX_MEMORY | max_memory | 4096 |
event_session_test3 |
7_WITH_STARTUP_STATE | startup_state | 1 |
Cette étape termine la section sur les affichages catalogue.
Vues de gestion dynamique (DMVs)
Cette section fournit plusieurs instructions Transact-SQL SELECT qui servent chacun un objectif métier spécifique. En outre, les instructions SELECT démontrent comment vous pouvez JOIN les DMV de manière conjointe pour toutes nouvelles utilisations envisagées.
La documentation de référence des DMVs est disponible dans les Extended Events Dynamic Management Views.
Tous les objets que vous pouvez utiliser dans le domaine des événements étendus proviennent de packages qui sont chargés dans le système. Cette section répertorie tous les packages et leurs descriptions.
SELECT --C.1
p.name AS [Package],
p.description AS [Package-Description]
FROM
sys.dm_xe_packages AS p
ORDER BY
p.name;
Sortie
Voici la liste des packages.
| Package | Description du package |
|---|---|
filestream |
Événements étendus pour FILESTREAM et FileTable SQL Server |
package0 |
Package par défaut. Contient l’ensemble des types, mappages, opérateurs de comparaison, actions et cibles standard |
qds |
Événements étendus pour Magasin des requêtes |
SecAudit |
Événements d’audit de sécurité |
sqlclr |
Événements étendus pour SQL CLR |
sqlos |
Événements étendus pour le système d’exploitation SQL |
SQLSatellite |
Événements étendus pour SQL Server Machine Learning Services |
sqlserver |
Événements étendus pour Microsoft SQL Server |
sqlsni |
Événements étendus pour Microsoft SQL Server |
ucs |
Événements étendus pour la pile de communications unifiées |
XtpCompile |
Événements étendus pour la compilation XTP |
XtpEngine |
Événements étendus pour le moteur XTP |
XtpRuntime |
Événements étendus pour le runtime XTP |
Définitions des abréviations précédentes :
-
clr= Common Language Runtime de .NET -
qds= Magasin de données de requête -
sni= Interface réseau du serveur -
ucs= Stack des communications unifiées -
xtp= Traitement des transactions extrêmes
SELECT tous les éléments disponibles triés par type
L’exemple suivant SELECT retourne une ligne pour chaque objet.
SELECT --C.3
o.object_type AS [Type-of-Item],
p.name AS [Package],
o.name AS [Item],
o.description AS [Item-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p ON o.package_guid = p.guid
WHERE
o.object_type IN ('action' , 'target' , 'pred_source')
AND
(
(o.capabilities & 1) = 0
OR
o.capabilities IS NULL
)
ORDER BY
[Type-of-Item],
[Package],
[Item];
Champs de données disponibles pour votre événement
L’exemple suivant SELECT retourne tous les champs de données qui sont particuliers à votre type d’événement.
- Notez l’élément de
WHEREclause :column_type = 'data'. - En outre, vous devez modifier la valeur de clause
WHEREpouro.name =.
SELECT -- C.4
p.name AS [Package],
c.object_name AS [Event],
c.name AS [Column-for-Predicate-Data],
c.description AS [Column-Description]
FROM
sys.dm_xe_object_columns AS c
JOIN sys.dm_xe_objects AS o
ON o.name = c.object_name
JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE
c.column_type = 'data'
AND
o.object_type = 'event'
AND
o.name = '\<EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Event],
[Column-for-Predicate-Data];
Sortie
Les lignes suivantes ont été retournées par l'opération précédente SELECT, WHERE o.name = 'lock_deadlock'.
- Chaque ligne représente un filtre facultatif pour l’événement
sqlserver.lock_deadlock. - La
Column-Descriptioncolonne est omise de l’affichage suivant. Sa valeur est souventNULL. - Il s'agit d'un résultat réel, sauf pour la colonne Description qui est souvent omise
NULL. - Ces lignes sont
WHERE object_type = 'lock_deadlock'.
| Package | Événement | Colonne pour les données de prédicat |
|---|---|---|
sqlserver |
lock_deadlock |
associated_object_id |
sqlserver |
lock_deadlock |
database_id |
sqlserver |
lock_deadlock |
database_name |
sqlserver |
lock_deadlock |
deadlock_id |
sqlserver |
lock_deadlock |
duration |
sqlserver |
lock_deadlock |
lockspace_nest_id |
sqlserver |
lock_deadlock |
lockspace_sub_id |
sqlserver |
lock_deadlock |
lockspace_workspace_id |
sqlserver |
lock_deadlock |
mode |
sqlserver |
lock_deadlock |
object_id |
sqlserver |
lock_deadlock |
owner_type |
sqlserver |
lock_deadlock |
resource_0 |
sqlserver |
lock_deadlock |
resource_1 |
sqlserver |
lock_deadlock |
resource_2 |
sqlserver |
lock_deadlock |
resource_description |
sqlserver |
lock_deadlock |
resource_type |
sqlserver |
lock_deadlock |
transaction_id |
sys.dm_xe_map_values et champs d’événement
Les éléments suivants SELECT incluent l'ajout d'un JOIN à la vue sys.dm_xe_map_values.
L’objectif de SELECT est de montrer les nombreux champs parmi lesquels vous pouvez choisir pour votre session d’événements. Vous pouvez utiliser les champs d’événements de deux manières :
- Pour choisir les valeurs de champ qui seront écrites dans votre cible pour chaque occurrence d’événement.
- Pour filtrer les occurrences des événements qui seront envoyées à la cible plutôt que conservées.
SELECT --C.5
dp.name AS [Package],
do.name AS [Object],
do.object_type AS [Object-Type],
'o--c' AS [O--C],
dc.name AS [Column],
dc.type_name AS [Column-Type-Name],
dc.column_type AS [Column-Type],
dc.column_value AS [Column-Value],
'c--m' AS [C--M],
dm.map_value AS [Map-Value],
dm.map_key AS [Map-Key]
FROM sys.dm_xe_objects AS do
JOIN sys.dm_xe_object_columns AS dc
ON dc.object_name = do.name
JOIN sys.dm_xe_map_values AS dm
ON dm.name = dc.type_name
JOIN sys.dm_xe_packages AS dp
ON dp.guid = do.package_guid
WHERE
do.object_type = 'event'
AND
do.name = '\<YOUR-EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Object],
[Column],
[Map-Value];
Sortie
Ensuite, voici un échantillon des 100+ lignes de sortie réelles de la SELECT T-SQL précédente. La ligne pour resource_type est pertinente au filtrage de prédicat utilisé dans l'exemple event_session_test3 ailleurs dans cet article.
/*** 5 sampled rows from the actual rows returned.
NOTE: 'resource_type' under 'Column'.
Package Object Object-Type O--C Column Column-Type-Name Column-Type Column-Value C--M Map-Value Map-Key
------- ------ ----------- ---- ------ ---------------- ----------- ------------ ---- --------- -------
sqlserver lock_deadlock event o--c CHANNEL etw_channel readonly 2 c--m Operational 4
sqlserver lock_deadlock event o--c KEYWORD keyword_map readonly 16 c--m access_methods 1024
sqlserver lock_deadlock event o--c mode lock_mode data NULL c--m IX 8
sqlserver lock_deadlock event o--c owner_type lock_owner_type data NULL c--m Cursor 2
sqlserver lock_deadlock event o--c resource_type lock_resource_type data NULL c--m PAGE 6
Therefore, on your CREATE EVENT SESSION statement, in its ADD EVENT WHERE clause,
you could put:
WHERE( ... resource_type = 6 ...) -- Meaning: 6 = PAGE.
***/
Paramètres des cibles
La commande suivante SELECT retourne chaque paramètre de votre cible. Chaque paramètre est balisé pour indiquer s’il est obligatoire. Les valeurs que vous assignez aux paramètres affectent le comportement de la cible.
- Notez l’élément de
WHEREclause :object_type = 'customizable'. - En outre, vous devez modifier la valeur de clause
WHEREpouro.name =.
SELECT --C.6
p.name AS [Package],
o.name AS [Target],
c.name AS [Parameter],
c.type_name AS [Parameter-Type],
CASE c.capabilities_desc
WHEN 'mandatory' THEN 'YES_Mandatory'
ELSE 'Not_mandatory'
END AS [IsMandatoryYN],
c.description AS [Parameter-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
LEFT OUTER JOIN sys.dm_xe_object_columns AS c
ON o.name = c.object_name
AND c.column_type = 'customizable' -- !
WHERE
o.object_type = 'target'
AND
o.name LIKE '%' -- Or '\<YOUR-TARGET-NAME-HERE!>'.
ORDER BY
[Package],
[Target],
[IsMandatoryYN] DESC,
[Parameter];
Sortie
Les lignes de paramètres suivantes sont un petit sous-ensemble de ceux retournés par le précédent SELECT.
/*** Actual output, all rows, where target name = 'event_file'.
Package Target Parameter Parameter-Type IsMandatoryYN Parameter-Description
------- ------ --------- -------------- ------------- ---------------------
package0 event_file filename unicode_string_ptr YES_Mandatory Specifies the location and file name of the log
package0 event_file increment uint64 Not_mandatory Size in MB to grow the file
package0 event_file lazy_create_blob boolean Not_mandatory Create blob upon publishing of first event buffer, not before.
package0 event_file max_file_size uint64 Not_mandatory Maximum file size in MB
package0 event_file max_rollover_files uint32 Not_mandatory Maximum number of files to retain
package0 event_file metadatafile unicode_string_ptr Not_mandatory Not used
***/
Conversion de la colonne target_data du DMV SELECT en XML
Cela DMV SELECT retourne des lignes de données à partir de la cible de votre session d’événements active. Les données sont converties en XML, ce qui rend sa cellule retournée sélectionnable pour faciliter l’affichage dans SSMS.
- Si votre session d’événements est arrêtée, cela
SELECTne renvoie aucune ligne. - Vous devez modifier la valeur de clause
WHEREpours.name =.
SELECT --C.7
s.name,
t.target_name,
CAST(t.target_data AS XML) AS [XML-Cast]
FROM
sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE
s.name = '\<Your-Session-Name-Here!>';
Sortie : une seule ligne, y compris sa cellule XML
Voici la seule ligne qui est sortie de la précédente SELECT. La colonne XML-Cast contient une chaîne de code XML que SSMS comprend est XML. Par conséquent, SSMS comprend qu’il doit rendre la XML-Cast cellule sélectionnable.
Pour cette séquence :
- La valeur
s.name =a été définie pour une session d'événement liée à l’événementcheckpoint_begin. - La cible était un ring_buffer.
name target_name XML-Cast
---- ----------- --------
checkpoint_session_ring_buffer2 ring_buffer <RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104"><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event></RingBufferTarget>
Sortie, XML affiché lisible quand une cellule est sélectionnée
Lorsque la cellule XML-Cast est sélectionnée, l’affichage suivant s’affiche.
<RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104">
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
</RingBufferTarget>
SELECT dans une fonction pour extraire les données d'event_file depuis un lecteur de disque
Supposez que votre session d’événements a collecté des données puis a été arrêtée. Si votre session a été définie pour utiliser la cible event_file, vous pouvez toujours récupérer les données en appelant la fonction sys.fn_xe_target_read_file.
- Vous devez modifier votre chemin et nom de fichier dans le paramètre de l’appel de fonction, avant d’exécuter
SELECT.- Ne faites pas attention aux chiffres supplémentaires incorporés par le système SQL dans vos noms de fichiers .XEL chaque fois que vous redémarrez votre session. Affectez simplement le nom racine et l’extension ordinaires.
SELECT --C.8
f.module_guid,
f.package_guid,
f.object_name,
f.file_name,
f.file_offset,
CAST(f.event_data AS XML) AS [Event-Data-As-XML]
FROM
sys.fn_xe_file_target_read_file(
'\<YOUR-PATH-FILE-NAME-ROOT-HERE!>*.xel',
--'c:\temp\\Checkpoint_Begins_ES*.xel', -- Example.
NULL, NULL, NULL
) AS f;
Sortie : lignes retournées par l’instruction SELECT
Voici les lignes retournées par la fonction précédente SELECT FROM . La Event-Data-As-XML colonne XML contient les données qui concernent spécifiquement l’occurrence d’événement.
module_guid package_guid object_name file_name file_offset Event-Data-As-XML
----------- ------------ ----------- --------- ----------- -----------------
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:14.025Z"><data name="database_id"><value>5</value></data></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:17.704Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:17.709Z"><data name="database_id"><value>5</value></data></event>
Sortie : une cellule XML
Voici le contenu de la première cellule XML, tirée de l’ensemble de lignes retourné précédent.
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z">
<data name="database_id">
<value>5</value>
</data>
<action name="session_id" package="sqlserver">
<value>60</value>
</action>
<action name="database_id" package="sqlserver">
<value>5</value>
</action>
</event>