Compartir a través de


SELECTs y JOINs desde las Vistas del Sistema para Eventos Extendidos

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

En este artículo se explican los dos conjuntos de vistas del sistema relacionadas con eventos extendidos. En este artículo se describe lo siguiente:

  • Cómo gestionar JOIN varias vistas del sistema.
  • Procedimiento para SELECT determinados tipos de información de las vistas del sistema.

Hay dos conjuntos de vistas del sistema para Eventos extendidos:

Vistas de catálogo

  • Estas vistas almacenan información sobre la definición de cada sesión de eventos creada por CREATE EVENT SESSION (Transact-SQL). Pero estas vistas no saben si las sesiones empezaron a ejecutarse en algún momento.
    • Por ejemplo, si el Object Explorer de SSMS no muestra ninguna sesión de eventos definida, seleccionar desde la vista sys.server_event_session_targets devolverá cero filas.
  • La mayoría de los ejemplos se escriben para SQL Server y Azure SQL Managed Instance. Sin embargo, con pequeñas modificaciones, se ejecutarían en Azure SQL Database y SQL Database en Fabric al cambiar el server en el nombre de la DMV a database:
    • sys.server_event_session* es el prefijo de nombre en SQL Server y Azure SQL Managed Instance.
    • sys.database_event_session* es el prefijo de nombre en Azure SQL Database y SQL Database en Fabric.
    • Para obtener más información sobre cada uno, consulte Vistas de catálogo de eventos extendidos.

Vistas de administración dinámica (DMV)

  • Almacenan información sobre la actividad actual de las sesiones de eventos en ejecución, pero tienen poca información sobre la definición de las sesiones.

    • Aunque todas las sesiones de eventos están detenidas actualmente, una SELECT desde la vista sys.dm_xe_packages sigue devolviendo filas porque varios paquetes se cargan en la memoria activa cuando se inicia un servidor.
    • Por el mismo motivo, sys.dm_xe_objects y sys.dm_xe_object_columns siguen devolviendo filas.
  • El prefijo del nombre de las DMV de Eventos extendidos es el siguiente:

    • sys.dm_xe_* es el prefijo de nombre en SQL Server y Azure SQL Managed Instance.
    • sys.dm_xe_database_* suele ser el prefijo de nombre en Azure SQL Database y en la base de datos SQL de Fabric.

Permissions

Para SELECT desde las vistas del sistema, es necesario el permiso siguiente:

  • SQL Server 2019 (15.x) y versiones anteriores requieren VIEW SERVER STATE permiso en el servidor.
  • SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER PERFORMANCE STATE permiso en el servidor.
  • Azure SQL Database y SQL Database en Fabric requieren VIEW DATABASE PERFORMANCE STATE permiso en la base de datos.

Vistas de catálogo

Para los fines de esta página, cree una sesión de eventos extendidos con SSMS o con T-SQL. Instale la versión más reciente de SQL Server Management Studio (SSMS).

Creación de una sesión en SQL Server Management Studio (SSMS)

En SSMS, en su Explorador de objetos, puede iniciar el cuadro de diálogo Nueva sesión expandiendo Administración>Eventos extendidos, y, a continuación, haga clic con el botón derecho en Sesiones>Nueva sesión.

En el cuadro de diálogo grande de Nueva sesión, vemos en la primera sección con la etiqueta General que se ha seleccionado la opción para Iniciar la sesión de eventos al iniciar el servidor.

Captura de pantalla de SSMS de la nueva sesión > general, Iniciar la sesión de eventos en el inicio del servidor.

A continuación, en la sección Eventos , vemos que se eligió el lock_deadlock evento. Para ese evento, vemos que se han seleccionado tres Acciones . Esto significa que se seleccionó el botón Configurar , que se vuelve gris después de seleccionarse.

> Events, Global Fields (Actions).

A continuación, todavía en la sección Eventos>Configurar, vemos que resource_type se ha establecido en PAGE. Esto significa que los datos del evento no se enviarán desde el motor de eventos al destino si el valor de resource_type es distinto de PAGE.

Podemos ver filtros de predicado adicionales para el nombre de la base de datos y para un contador.

Captura de pantalla de SSMS de la nueva sesión > eventos, campos de filtro de predicado (acciones).

Después, en la sección Almacenamiento de datos, vemos que se ha elegido como destino event_file. Además, se ha seleccionado la opción Habilitar sustitución incremental de archivos.

Captura de pantalla de SSMS de la nueva sesión de almacenamiento de datos > eventfile_enablefileroleover.

Por último, en la sección Avanzadas, vemos que el valor de Latencia máxima de envío se ha reducido a 4 segundos.

Captura de pantalla de SSMS de la nueva sesión > avanzada, latencia máxima de distribución.

Creación de una sesión de eventos en T-SQL

Independientemente de cómo se cree una definición de sesión de evento, desde SSMS, la sesión se puede convertir en un script de Transact-SQL idéntico. Puede examinar las capturas de pantalla de Nueva sesión anteriores y comparar sus especificaciones visibles con las cláusulas del siguiente script T-SQL CREATE EVENT SESSION generado.

Para realizar ingeniería inversa en una sesión de eventos, en el Explorador de Objetos, puede hacer clic con el botón derecho en el nodo de su sesión y, a continuación, elegir Script Session as>CREATE para el >Portapapeles.

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
    );

Vista de catálogo SELECT JOIN UNION

La siguiente instrucción T-SQL SELECT solo es larga porque UNE varios SELECT pequeños juntos. Todas las instrucciones SELECT pequeñas se pueden ejecutar de manera independiente. Dichas instrucciones muestran cómo se deben combinar varias vistas de catálogo del sistema.

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]
;

Output

En la tabla siguiente se muestra la salida de la ejecución del objeto anterior SELECT JOIN UNION. Los nombres y valores de los parámetros de salida se asignan a lo que es claramente visible en la instrucción anterior CREATE EVENT SESSION.

Session-Name Clause-Type Parameter-Name Parameter-Value
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].[counter]<=(16)) (Not_Applicable)
event_session_test3 5_TARGET event_file (Not_Applicable)
event_session_test3 6_TARGET_SET nombredearchivo 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

Con esto se completa la sección sobre vistas de catálogo.

Vistas de administración dinámica (DMV)

En esta sección se proporcionan varias instrucciones Transact-SQL SELECT que cada una sirve a un propósito empresarial útil específico. Además, los SELECT muestran cómo puede combinar JOIN las DMV para cualquier nuevo uso que desee.

La documentación de referencia de las DMV está disponible en Vistas de administración dinámica de eventos extendidos

Todos los objetos que se pueden usar en el área de eventos extendidos proceden de los paquetes que se han cargado en el sistema. En esta sección se enumeran todos los paquetes y sus descripciones.

SELECT  --C.1
        p.name         AS [Package],
        p.description  AS [Package-Description]
    FROM
        sys.dm_xe_packages  AS p
    ORDER BY
        p.name;

Output

Esta es una lista de los paquetes.

Paquete Package-Description
filestream Eventos extendidos para FILESTREAM y FileTable de SQL Server
package0 Paquete predeterminado. Contiene todos los tipos, asignaciones, operadores de comparación, acciones y destinos estándar
qds Eventos extendidos para Almacén de consultas
SecAudit Eventos de auditoría de seguridad
sqlclr Eventos extendidos para SQL CLR
sqlos Eventos extendidos del sistema operativo SQL
SQLSatellite Eventos extendidos para SQL Server Machine Learning Services
sqlserver Eventos extendidos para Microsoft SQL Server
sqlsni Eventos extendidos para Microsoft SQL Server
ucs Eventos extendidos de la pila de comunicaciones unificadas
XtpCompile Eventos extendidos para la compilación XTP
XtpEngine Eventos extendidos para el motor XTP
XtpRuntime Eventos extendidos para el runtime XTP

Definiciones de las siglas anteriores:

  • clr = Entorno de Ejecución de Lenguaje Común de .NET
  • qds = Almacén de datos de consulta
  • sni = Interfaz de red del servidor
  • ucs = Pila de comunicaciones unificadas
  • xtp = Procesamiento extremo de transacciones

SELECCIONAR todos los elementos disponibles ordenados por tipo

A continuación SELECT se devuelve una fila para cada objeto.

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];

Campos de datos disponibles para el evento

A continuación, se devuelven todos los campos de datos específicos de su tipo de evento.

  • Anote el elemento de la cláusula WHERE: column_type = 'data'.
  • Además, tendría que editar el valor de la WHERE cláusula para o.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];

Output

Las filas siguientes fueron devueltas por el anterior SELECT, WHERE o.name = 'lock_deadlock':

  • Cada fila representa un filtro opcional para el sqlserver.lock_deadlock evento.
  • La Column-Description columna se omite en la siguiente presentación. Su valor suele ser NULL.
  • Se trata de una salida real, excepto para la columna Descripción omitida, que suele ser NULL.
  • Estas filas son WHERE object_type = 'lock_deadlock'.
Paquete Evento Column-for-Predicate-Data
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 y campos de eventos

A continuación se SELECT incluye un JOIN para la sys.dm_xe_map_values vista.

El propósito de SELECT es mostrar los numerosos campos entre los que puede elegir para la sesión de eventos. Los campos de evento se pueden usar de dos maneras:

  • Para elegir qué valores de campo se escribirán en su destino para cada ocurrencia de evento.
  • Para filtrar qué repeticiones de eventos se enviarán desde el destino y cuáles se conservarán.
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];

Output

A continuación, se muestra un muestreo de las más de 100 filas reales de salida del T-SQL anterior SELECT. La fila de resource_type es relevante para el filtrado de predicado usado en el ejemplo de event_session_test3 en otra parte de este artículo.

/***  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.
***/

Parámetros para destinos

A continuación, SELECT devuelve cada parámetro de su objetivo. Cada parámetro tiene una etiqueta para indicar si es obligatorio. Los valores que asigne a los parámetros afectarán al comportamiento del destino.

  • Anote el elemento de la cláusula WHERE: object_type = 'customizable'.
  • Además, tendría que editar el valor de la WHERE cláusula para o.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];

Output

Las siguientes filas de parámetros son un pequeño subconjunto de los devueltos por el anterior 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
***/

DMV SELECT de convertir la columna target_data a XML

Este DMV SELECT retorna filas de datos del destino de su sesión de eventos activa. Los datos se convierten a XML, lo que hace que la celda devuelta sea seleccionable para facilitar su visualización en SSMS.

  • Si se detiene la sesión de eventos, esto devolverá SELECT cero filas.
  • Tendría que editar el valor de una cláusula WHERE para s.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!>';

Salida, la única fila, incluida la celda XML

Esta es la única fila que resulta de la anterior SELECT. La columna XML-Cast contiene una cadena de XML que SSMS entiende es XML. Por lo tanto, SSMS entiende que debe hacer que la XML-Cast celda sea seleccionable.

Para esta ejecución:

  • El valor s.name = se estableció en una sesión de eventos para el evento checkpoint_begin.
  • El destino era 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>

Salida, XML visualizado de forma legible cuando se selecciona la celda

Cuando se selecciona la celda XML-Cast, aparece la siguiente pantalla bonita.

<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 desde una función para recuperar datos de event_file de la unidad de disco

Supongamos que la sesión de eventos recopiló algunos datos y después se detuvo. Si la sesión fue definida para usar el destino de event_file, aún puede recuperar los datos llamando a la función sys.fn_xe_target_read_file.

  • Debe editar la ruta de acceso y el nombre de archivo en el parámetro de la llamada de función antes de ejecutar este SELECT.
    • Ignore los dígitos adicionales que el sistema SQL inserta en los nombres de archivo .XEL reales cada vez que reinicie la sesión. Simplemente asigne el nombre de raíz y la extensión normales.
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;

Salida, filas devueltas al aplicar la instrucción SELECT FROM en la función

A continuación se muestran las filas devueltas por la función anterior SELECT FROM . La Event-Data-As-XML columna XML contiene los datos que se refieren específicamente a la aparición del evento.

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>

Salida, una celda XML

Aquí se muestra el contenido de la primera celda XML del conjunto de filas devuelto anteriormente.

<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>