Sdílet prostřednictvím


Výběry a spojování z systémových pohledů pro rozšířené události

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Tento článek vysvětluje dvě sady systémových zobrazení, která se vztahují k rozšířeným událostem. Článek ukazuje:

  • JOIN Postup různých systémových zobrazení
  • Jak určit SELECT konkrétní druhy informací ze systémových zobrazení.

Pro rozšířené události existují dvě sady systémových zobrazení:

Zobrazení katalogu

  • Tato zobrazení ukládají informace o definici každé relace událostí, kterou vytvořila funkce CREATE EVENT SESSION (Transact-SQL). Ale tato zobrazení nevědí nic o tom, jestli se některé relace již začaly spouštět.
    • Pokud například Průzkumník objektů SSMS nezobrazí žádné relace událostí, vrátí funkce SELECTing ze zobrazení sys.server_event_session_targets nulové řádky.
  • Většina příkladů je napsaná pro SQL Server a spravovanou instanci Azure SQL. S menšími úpravami by však běžely na Azure SQL Database a v prostředí Fabric by změnou server v názvu DMV na database:
    • sys.server_event_session* je předpona názvu na SQL Serveru a ve službě Azure SQL Managed Instance.
    • sys.database_event_session* je prefix názvu pro Azure SQL Database a SQL Database in Fabric.
    • Další informace ke každému z nich naleznete v tématu Zobrazení katalogu rozšířených událostí.

Dynamická zobrazení správy (DMV)

  • Uložte informace o aktuální aktivitě událostních relací, které právě probíhají. Tato zobrazení dynamické správy ale o definici relací málo vědí.

    • I v případě, že jsou všechny relace událostí aktuálně zastavené, vrátí zobrazení SELECT stále řádky, protože různé balíčky se načítají do aktivní paměti při spuštění serveru.
    • Ze stejného důvodu sys.dm_xe_objects a sys.dm_xe_object_columns přesto vracejí řádky.
  • Předpona názvu pro zobrazení dynamické správy rozšířených událostí je:

    • sys.dm_xe_* je předpona názvu na SQL Serveru a ve službě Azure SQL Managed Instance.
    • sys.dm_xe_database_* je obecně předpona názvu ve službě Azure SQL Database a SQL Database v rámci služby Fabric.

Povolení

Pro SELECT zobrazení systémů je nutné následující oprávnění:

  • SQL Server 2019 (15.x) a předchozí verze vyžadují VIEW SERVER STATE oprávnění k serveru.
  • SQL Server 2022 (16.x) a novější verze vyžadují VIEW SERVER PERFORMANCE STATE oprávnění k serveru.
  • Azure SQL Database a databáze SQL ve Fabric vyžadují VIEW DATABASE PERFORMANCE STATE oprávnění v databázi.

Zobrazení katalogu

Pro účely této stránky vytvořte relaci rozšířených událostí pomocí SSMS nebo pomocí T-SQL. Nainstalujte nejnovější verzi aplikace SQL Server Management Studio (SSMS).

Vytvoření relace v aplikaci SQL Server Management Studio (SSMS)

V SSMS, v jeho Průzkumníku objektů, můžete spustit dialogové okno Nová relace rozbalením části Správa>Rozšířené události, a následným kliknutím pravým tlačítkem myši na Relace>Nová relace.

V dialogovém okně Velká nová relace v první části s názvem Obecné vidíme, že je vybraná možnost Spustit relaci události při spuštění serveru.

Snímek obrazovky z aplikace SSMS obecné nové relace > a spuštění relace události při spuštění serveru

Dále v části Události vidíme, že lock_deadlock událost byla vybrána. U této události vidíme, že byly vybrány tři akce . To znamená, že bylo vybráno tlačítko Konfigurovat , které se po výběru změní na šedé.

Snímek obrazovky SSMS s událostmi nové relace > , globálními poli (akcemi)

Dálev části> stále vidíme, že resource_type byla nastavena na PAGEhodnotu . To znamená, že data událostí nebudou odeslána z modulu událostí do cíle, pokud resource_type hodnota je cokoli jiného než PAGE.

Vidíme další predikátové filtry pro název databáze a pro čítač.

Snímek obrazovky SSMS s novými událostmi relace > , pole predikátu filtru (akce)

Dále v části Úložiště dat vidíme, že event_file byl vybrán jako cíl. Dále vidíme, že byla vybrána možnost Povolit přetáčení souborů.

Snímek obrazovky v SSMS nového úložiště dat, relace > eventfile_enablefileroleover

Nakonec v části Upřesnit vidíme, že hodnota maximální latence odeslání se snížila na 4 sekundy.

Snímek obrazovky z SSMS nové relace: rozšířené > s maximální latencí odesílání.

Vytvořit událostní relaci v T-SQL

Bez ohledu na to, jak se vytvoří definice relace události, je možné z aplikace SSMS převést relaci zpět do dokonale odpovídajícího skriptu Transact-SQL. Můžete prozkoumat předchozí snímky obrazovky Nové relace a porovnat viditelné specifikace s klauzulemi v následujícím generovaném skriptu T-SQL CREATE EVENT SESSION.

Pokud chcete zpětnou analýzu relace události provést, můžete v Průzkumníku objektů kliknout pravým tlačítkem myši na uzel relace a potom zvolit relaci skriptu jako>CREATE ** >Schránka.

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

Zobrazení katalogu SELECT JOIN UNION

Následující příkaz T-SQL SELECT je dlouhý pouze proto, že sjednocuje několik malých SELECTů. Všechny malé selecty lze spouštět samostatně. Malé SELECTy ukazují, jak mají být různá systémová katalogová zobrazení společně spojena.

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

Výstup

Následující tabulka ukazuje výstup spuštění předchozího SELECT JOIN UNIONpříkazu . Názvy a hodnoty výstupních parametrů se mapují na to, co je jasně viditelné v předchozím CREATE EVENT SESSION příkazu.

Název sezení Typ klauzule Parameter-Name Parametr-Hodnota
event_session_test3 1_EVENT Název Události zámek_zablokování
event_session_test3 2_EVENT_SET shromáždit_název_databáze 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]. [čítač]<=(16)) (Not_Applicable)
event_session_test3 5_TARGET soubor_událostí (Not_Applicable)
event_session_test3 6_TARGET_SET filename c:\temp\event_session_test3_EF.xel
event_session_test3 6_TARGET_SET maximální_velikost_souboru 20
event_session_test3 6_TARGET_SET maximální počet přetočených souborů 2
event_session_test3 7_WITH_MAX_MEMORY maximální paměť 4096
event_session_test3 7_WITH_STARTUP_STATE stav při spuštění 1

Tím se dokončí část zobrazení katalogu.

Dynamická zobrazení správy (DMV)

Tato část obsahuje několik Transact-SQL SELECT prohlášení, které každý z nich slouží ke konkrétnímu užitečnému obchodnímu účelu. Dále funkce SELECT ukazují, jak můžete JOIN zobrazení dynamické správy společně použít pro všechna nová použití, která chcete použít.

Referenční dokumentace zobrazení dynamické správy je k dispozici v zobrazení dynamické správy rozšířených událostí.

Všechny objekty, které můžete použít v oblasti rozšířených událostí, pocházejí z balíčků, které jsou načteny do systému. V této části jsou uvedeny všechny balíčky a jejich popisy.

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

Výstup

Tady je seznam balíčků.

Package Popis balíčku
filestream Rozšířené události pro SQL Server FILESTREAM a FileTable
package0 Výchozí balíček. Obsahuje všechny standardní typy, mapy, porovnávací operátory, akce a cíle.
qds Rozšířené události pro úložiště dotazů (Query Store)
SecAudit Události auditu zabezpečení
sqlclr Rozšířené události pro SQL CLR
sqlos Rozšířené události pro operační systém SQL
SQLSatellite Rozšířené události pro SLUŽBU SQL Server Machine Learning Services
sqlserver Rozšířené události pro Microsoft SQL Server
sqlsni Rozšířené události pro Microsoft SQL Server
ucs Rozšířené události pro Unified Communications Stack
XtpCompile Rozšířené události pro kompilaci XTP
XtpEngine Rozšířené události pro modul XTP
XtpRuntime Rozšířené události pro modul runtime XTP

Definice předchozích inicialismů:

  • clr = Společné jazykové prostředí běhu .NET
  • qds = Úložiště dotazů dat
  • sni = Síťové rozhraní serveru
  • ucs = Stoh sjednocených komunikací
  • xtp = Extrémní zpracování transakcí

SELECT všechny dostupné položky seřazené podle typu

Následující SELECT řádek vrátí jeden řádek pro každý objekt.

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

Datová pole dostupná pro událost

Následující SELECT pole vrátí všechna datová pole, která jsou konkrétní pro váš typ události.

  • WHERE Všimněte si položky klauzule: column_type = 'data'.
  • Také byste museli upravit WHERE hodnotu klauzule pro 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];

Výstup

SELECT, WHERE o.name = 'lock_deadlock' vrátily následující řádky:

  • Každý řádek představuje volitelný filtr události sqlserver.lock_deadlock .
  • Sloupec Column-Description se vynechá z následujícího zobrazení. Její hodnota je často NULL.
  • Jedná se o skutečný výstup s výjimkou vynechaného sloupce Popis, který je často NULL.
  • Tyto řádky jsou WHERE object_type = 'lock_deadlock'.
Package Event Sloupec-pro-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 a pole událostí

SELECT Následující informace zahrnují JOIN do sys.dm_xe_map_values zobrazení.

Účelem je zobrazit řadu polí, ze kterých si můžete vybrat pro svoji relaci události. Pole událostí se dají použít dvěma způsoby:

  • K výběru, které hodnoty polí budou zapsány do vašeho cíle pro všechny případy výskytu události.
  • Chcete-li filtrovat, které výskyty událostí budou odeslány na váš cíl a které budou zachovány mimo něj.
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];

Výstup

Dále je vzorkování skutečných více než 100 řádků výstupu z předchozího T-SQL SELECT. Řádek pro resource_type je relevantní k filtrování predikátu použitému v příkladu event_session_test3 jinde v tomto článku.

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

Parametry cílů

Následující SELECT příkaz vrátí každý parametr pro váš cíl. Každý parametr je označen tak, aby označí, jestli je povinný. Hodnoty, které přiřadíte parametrům, ovlivňují chování cíle.

  • WHERE Všimněte si položky klauzule: object_type = 'customizable'.
  • Také byste museli upravit WHERE hodnotu klauzule pro 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];

Výstup

Následující řádky parametrů jsou malou podmnožinou parametrů vrácených předchozím SELECTznakem .

/***  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 převádí sloupec target_data do XML.

Vrací DMV SELECT datové řádky z cíle vaší aktivní relace události. Data jsou transformována na XML, což umožňuje snadné vybírání vrácených elementů pro zobrazení v aplikaci SSMS.

  • Pokud je relace událostí zastavená, SELECT vrátí nula řádků.
  • Je nutné upravit WHERE hodnotu klauzule pro 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!>';

Výstup, jediný řádek včetně buňky XML

Zde je jediný řádek, který je výstupem z předchozího SELECT. Sloupec XML-Cast obsahuje XML řetězec, který SSMS rozpoznává jako XML. SSMS proto rozumí tomu, že by měla být XML-Cast buňka vybratelná.

Pro účely tohoto spuštění:

  • Hodnota s.name = byla nastavena na relaci události pro událost checkpoint_begin.
  • Cílem byl 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>

Výstup, XML se při výběru buňky zobrazuje hezky

Když je vybrána XML-Cast buňka, zobrazí se následující hezká obrazovka.

<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 z funkce pro načtení dat event_file z disku

Předpokládejme, že vaše relace událostí shromáždila nějaká data a později se zastavila. Pokud byla relace definovaná tak, aby používala cíl event_file, můžete data stále načíst voláním funkce sys.fn_xe_target_read_file.

  • Před spuštěním tohoto SELECTpříkazu musíte upravit cestu a název souboru do parametru volání funkce.
    • Nevěnujte pozornost dodatečným číslicím, které systém SQL vloží do vaší skutečné názvy souborů XEL při každém restartování relace. Stačí dát normální kořenový název a příponu.
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;

Výstup, řádky vrácené funkcí SELECT FROM

Dále jsou řádky vrácené předchozí SELECT FROM funkcí. Sloupec Event-Data-As-XML XML obsahuje data, která se týkají konkrétně výskytu události.

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>

Výstup, jedna buňka XML

Tady je obsah první buňky XML z předchozí vrácené sady řádků.

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