Compartilhar via


SELECTs e JOINs de exibições do sistema para eventos estendidos

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Este artigo explica os dois conjuntos de exibições do sistema relacionados a Eventos Estendidos. O artigo ilustra:

  • Como visualizar JOIN várias visualizações do sistema.
  • Como especificar SELECT tipos de informações dos modos de exibição do sistema.

Há dois conjuntos de exibições do sistema para eventos estendidos:

Exibições do catálogo

  • Essas exibições armazenam informações sobre a definição de cada sessão de evento criada por CREATE EVENT SESSION (Transact-SQL). Mas essas exibições não sabem nada sobre se alguma das sessões já começou a ser executada.
    • Por exemplo, se o Pesquisador de Objetos do SSMS não mostrar sessões de evento definidas, fazer um SELECT na visão sys.server_event_session_targets retornará zero linhas.
  • A maioria dos exemplos são gravados para o SQL Server e a Instância Gerenciada de SQL do Azure. No entanto, com pequenas edições, eles seriam executados no Banco de Dados SQL do Azure e no Banco de Dados SQL no Fabric, alterando o nome da DMV de server para database.
    • sys.server_event_session* é o prefixo de nome no SQL Server e na Instância Gerenciada de SQL do Azure.
    • sys.database_event_session* é o prefixo de nome no Banco de Dados SQL do Azure e no Banco de Dados SQL no Fabric.
    • Para obter mais informações sobre cada um, consulte Visualizações do Catálogo de Eventos Estendidos.

DMVs (exibições de gerenciamento dinâmico)

  • Armazenam informações sobre a atividade atual das sessões de evento em execução. Mas esses DMVs sabem muito sobre a definição das sessões.

    • Mesmo que todas as sessões de evento estejam interrompidas no momento, uma SELECT do modo de exibição sys.dm_xe_packages ainda retornará linhas porque vários pacotes são carregados na memória ativa quando o servidor é iniciado.
    • Pelo mesmo motivo, sys.dm_xe_objects e sys.dm_xe_object_columns ainda retornam linhas.
  • O prefixo do nome para DMVs de eventos estendidos é:

    • sys.dm_xe_* é o prefixo de nome no SQL Server e na Instância Gerenciada de SQL do Azure.
    • sys.dm_xe_database_* geralmente é o prefixo de nome no Banco de Dados SQL do Azure e no Banco de Dados SQL no Fabric.

Permissions

Para SELECT visualizar as exibições do sistema, a seguinte permissão é necessária:

  • O SQL Server 2019 (15.x) e versões anteriores exigem VIEW SERVER STATE permissão no servidor.
  • O SQL Server 2022 (16.x) e versões posteriores exigem VIEW SERVER PERFORMANCE STATE permissão no servidor.
  • O Banco de Dados SQL do Azure e o Banco de Dados SQL no Fabric exigem VIEW DATABASE PERFORMANCE STATE permissão no banco de dados.

Exibições do catálogo

Para fins desta página, crie uma sessão de Eventos Estendidos com SSMS ou com T-SQL. Instale a versão mais recente do SSMS (SQL Server Management Studio).

Criar sessão no SSMS (SQL Server Management Studio)

No SSMS, no Explorador de Objetos, você pode iniciar a caixa de diálogo Nova Sessão expandindo Gerenciamento>Eventos Estendidos, e, em seguida, clicar com o botão direito do mouse em Sessões>Nova Sessão.

Na caixa de diálogo grande Nova Sessão , em sua primeira seção chamada Geral, vemos que a opção foi selecionada para Iniciar a sessão de evento na inicialização do servidor.

Captura de tela do SSMS da Nova Sessão > Geral: inicie a sessão de eventos na inicialização do servidor.

Em seguida, na seção Eventos , vemos que o lock_deadlock evento foi escolhido. Para esse evento, vemos que três Ações foram selecionadas. Isso significa que o botão Configurar foi selecionado, que fica cinza após ser selecionado.

Captura de tela do SSMS dos Eventos da Nova Sessão > Campos Globais (Ações).

Em seguida, ainda na seçãoConfiguração de >, vemos que resource_type foi definido como PAGE. Isso significa que os dados do evento não serão enviados do mecanismo de evento para o destino se o valor de resource_type for qualquer coisa diferente de PAGE.

Vemos filtros de predicado adicionais para o nome do banco de dados e para um contador.

Captura de tela do SSMS da Nova Sessão > Eventos, Campos de Predicado do Filtro (Ações).

Em seguida, na seção Armazenamento de Dados, vemos que event_file foi selecionado como destino. Além disso, vemos que a opção Habilitar substituição de arquivo foi selecionada.

Captura de tela do SSMS da Nova Sessão de Armazenamento de Dados >, eventfile_enablefileroleover.

Por fim, na seção Avançado, vemos que o valor de Latência Máxima de Expedição foi reduzido para 4 segundos.

> Advanced, Maximum dispatch latency.

Criar sessão de evento no T-SQL

Independentemente de como uma definição de sessão de evento seja criada, do SSMS, a sessão pode ser engenheirada inversamente para um script de Transact-SQL perfeitamente correspondente. Você pode examinar as capturas de tela anteriores da Nova Sessão e comparar suas especificações visíveis com as cláusulas no script T-SQL CREATE EVENT SESSION gerado a seguir.

Para fazer engenharia reversa de uma sessão de evento, no Pesquisador de Objetos, você pode clicar com o botão direito do mouse no nó da sessão e, em seguida, escolher Scriptar Sessão como>CREATE para >.

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

Exibição de catálogo SELECT JOIN UNION

A instrução T-SQL SELECT a seguir é longa apenas porque faz UNION de várias pequenas instruções SELECT. Qualquer um dos SELECTs pequenos pode ser executado sozinho. Os pequenos SELECT mostram como as várias exibições de catalogação do sistema devem ser unidas, utilizando JOIN.

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

Saída

A tabela a seguir mostra a saída da execução do componente anterior SELECT JOIN UNION. Os valores e os nomes de parâmetro de saída correspondem ao que é claramente visível na declaração CREATE EVENT SESSION anterior.

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].[contador]<=(16)) (Not_Applicable)
event_session_test3 5_TARGET event_file (Not_Applicable)
event_session_test3 6_TARGET_SET filename 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

Isso conclui a seção sobre exibições do catálogo.

DMVs (exibições de gerenciamento dinâmico)

Esta seção fornece várias instruções Transact-SQL SELECT que atendem a uma finalidade comercial útil específica. Além disso, as SELECTs demonstram como você pode JOIN unir as DMVs para quaisquer novos usos que você desejar.

A documentação de referência dos DMVs está disponível em Exibições de Gerenciamento Dinâmico de Eventos Estendidos

Todos os objetos que você pode usar na área de eventos estendidos são provenientes de pacotes que são carregados no sistema. Esta seção lista todos os pacotes e suas descrições.

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

Saída

Aqui está a lista de pacotes.

Pacote Package-Description
filestream Eventos estendidos para SQL Server FILESTREAM e FileTable
package0 Pacote padrão. Contém todos os tipos, mapas, operadores de comparação, ações e destinos padrão
qds Eventos estendidos para Repositório de Consultas
SecAudit Eventos de auditoria de segurança
sqlclr Eventos estendidos para SQL CLR
sqlos Eventos estendidos para o Sistema Operacional SQL
SQLSatellite Eventos estendidos para os Serviços de Machine Learning do SQL Server
sqlserver Eventos estendidos para o Microsoft SQL Server
sqlsni Eventos estendidos para o Microsoft SQL Server
ucs Eventos estendidos para Pilha de Comunicações Unificadas
XtpCompile Eventos estendidos para a Compilação XTP
XtpEngine Eventos estendidos para o mecanismo XTP
XtpRuntime Eventos estendidos para o Runtime XTP

Definições dos inicialismos anteriores:

  • clr = Ambiente de Execução Comum do .NET
  • qds = Repositório de dados de consulta
  • sni = Interface de Rede do Servidor
  • ucs = Pilha de Comunicações Unificadas
  • xtp = Processamento extremo de transações

SELECIONe todos os itens disponíveis classificados por tipo

O seguinte SELECT retorna uma linha 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 dados disponíveis para o evento

O seguinte SELECT retorna todos os campos de dados que são específicos ao seu tipo de evento.

  • Observe o item WHERE da cláusula: column_type = 'data'.
  • Além disso, você precisaria editar o valor da cláusula WHERE 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];

Saída

As seguintes linhas foram retornadas pelos elementos anteriores SELECT, WHERE o.name = 'lock_deadlock':

  • Cada linha representa um filtro opcional para o sqlserver.lock_deadlock evento.
  • A Column-Description coluna é omitida da exibição a seguir. Seu valor é frequentemente NULL.
  • Esta é a saída real, exceto pela coluna de descrição, que geralmente está NULL.
  • Essas linhas são WHERE object_type = 'lock_deadlock'.
Pacote 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

campos de sys.dm_xe_map_values e eventos

O seguinte SELECT inclui um JOIN na visualização de sys.dm_xe_map_values.

A finalidade de SELECT mostrar os vários campos que você pode escolher para sua sessão de evento. Os campos de evento podem ser usados de duas maneiras:

  • Para escolher quais valores de campo serão gravados em seu destino para cada ocorrência de evento.
  • Para filtrar quais ocorrências do evento serão enviadas para versus mantidas fora de seu destino.
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];

Saída

Em seguida, há uma amostragem das mais de 100 linhas reais de saída do T-SQL anterior SELECT. A linha resource_type é relevante para a filtragem de predicado usada no exemplo event_session_test3 mencionado em outro lugar neste artigo.

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

O seguinte SELECT retorna todos os parâmetros para seu alvo. Cada parâmetro está marcado para indicar se é obrigatório. Os valores que você atribui a parâmetros afetam o comportamento do destino.

  • Observe o item WHERE da cláusula: object_type = 'customizable'.
  • Além disso, você precisaria editar o valor da cláusula WHERE 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];

Saída

As linhas de parâmetros a seguir são um pequeno subconjunto daqueles retornados pelo 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 convertendo a coluna target_data para XML

Isso DMV SELECT retorna linhas de dados do destino da sessão de evento ativa. Os dados são convertidos em XML, o que torna sua célula retornada selecionável para exibição fácil no SSMS.

  • Se a sessão de evento for interrompida, este SELECT retornará zero linhas.
  • Você precisaria editar o valor da 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!>';

Saída, a única linha, incluindo sua célula XML

Aqui está a única linha produzida pelo resultado do anterior SELECT. A coluna XML-Cast contém uma cadeia de caracteres de XML que o SSMS entende ser XML. Portanto, o SSMS entende que deve tornar a XML-Cast célula selecionável.

Para esta execução:

  • O valor s.name = foi definido para uma sessão do evento checkpoint_begin.
  • O destino era um 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>

Saída, XML exibido de forma legível quando a célula é selecionada

Quando a célula XML-Cast é selecionada, a exibição bonita a seguir é exibida.

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

Usar SELECT em uma função para recuperar dados do event_file da unidade de disco

Suponha que sua sessão de eventos coletou alguns dados e foi parada posteriormente. Se a sessão tiver sido definida para usar o destino event_file, você ainda poderá recuperar os dados chamando a função sys.fn_xe_target_read_file.

  • Você deve editar o caminho e o nome do arquivo no parâmetro da chamada de função, antes de executá-lo SELECT.
    • Não dê atenção aos dígitos extra que o sistema SQL integra nos nomes de arquivo .XEL reais sempre que você reinicia a sessão. Apenas dê o nome raiz e a extensão normais.
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;

Saída, linhas retornadas pelo SELECT FROM da função

Em seguida estão as linhas retornadas pela função anterior SELECT FROM . A Event-Data-As-XML coluna XML contém os dados especificamente sobre a ocorrência do 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>

Saída, uma célula XML

Aqui está o conteúdo da primeira célula XML, do conjunto de linhas retornado anterior.

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