Delen via


SELECTs en JOIN's uit systeemweergaven voor uitgebreide gebeurtenissen

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

In dit artikel worden de twee sets systeemweergaven uitgelegd die betrekking hebben op uitgebreide gebeurtenissen. Het artikel illustreert:

  • JOIN Verschillende systeemweergaven.
  • SELECT Specifieke soorten informatie uit de systeemweergaven.

Er zijn twee sets systeemweergaven voor uitgebreide gebeurtenissen:

Catalogusweergaven

  • In deze weergaven wordt informatie opgeslagen over de definitie van elke gebeurtenissessie die is gemaakt door CREATE EVENT SESSION (Transact-SQL). Maar deze weergaven weten niets over of er ooit sessies zijn gestart.
    • Als in de SSMS-objectverkenner bijvoorbeeld geen gebeurtenissessies worden gedefinieerd, retourneert SELECTing vanuit de weergave sys.server_event_session_targets nul rijen.
  • De meeste voorbeelden zijn geschreven voor SQL Server en Azure SQL Managed Instance. Maar door kleine bewerkingen zouden ze werken in Azure SQL Database en SQL Database in Fabric door de server in de naam van de DMV te wijzigen in database.
    • sys.server_event_session* is het naamvoorvoegsel in SQL Server en Azure SQL Managed Instance.
    • sys.database_event_session* is het naamvoorvoegsel in Azure SQL Database en SQL Database in Fabric.
    • Zie De uitgebreide weergaven van de gebeurteniscatalogus voor meer informatie.

Dynamische beheerweergaven (DMVs)

  • Sla informatie op over de huidige activiteit van actieve gebeurtenissessies. Maar deze DMV's weten weinig over de definitie van sessies.

    • Zelfs als alle gebeurtenissessies momenteel zijn gestopt, retourneert een SELECT vanuit de weergave sys.dm_xe_packages nog steeds rijen, omdat bij het starten van de server verschillende pakketten in het actieve geheugen worden geladen.
    • Om dezelfde reden sys.dm_xe_objects en sys.dm_xe_object_columns nog steeds rijen retourneren.
  • Naamvoorvoegsel voor DMVs voor uitgebreide gebeurtenissen is:

    • sys.dm_xe_* is het naamvoorvoegsel in SQL Server en Azure SQL Managed Instance.
    • sys.dm_xe_database_* is over het algemeen het naamvoorvoegsel in Azure SQL Database en SQL Database in Fabric.

Permissions

Om vanuit SELECT de systeemweergaven te werken, is de volgende machtiging nodig:

  • SQL Server 2019 (15.x) en eerdere versies vereisen VIEW SERVER STATE machtigingen op de server.
  • VOOR SQL Server 2022 (16.x) en latere versies is machtiging vereist VIEW SERVER PERFORMANCE STATE op de server.
  • Voor Azure SQL Database en SQL Database in Fabric zijn machtigingen in de database vereist VIEW DATABASE PERFORMANCE STATE .

Catalogusweergaven

Voor deze pagina maakt u een uitgebreide gebeurtenissensessie met SSMS of met T-SQL. Gebruik altijd de nieuwste update van SSMS.

Een sessie maken in SQL Server Management Studio (SSMS)

In SSMS kunt u in objectverkenner het dialoogvenster Nieuwe sessie starten doorUitgebreide beheergebeurtenissen> uit te vouwen en vervolgens met de rechtermuisknop op Sessies>nieuwe sessie te klikken.

In het dialoogvenster Grote Nieuwe sessie , in de eerste sectie met het label Algemeen, zien we dat de optie is geselecteerd om de gebeurtenissessie bij het opstarten van de server te starten.

Schermopname van SSMS van de nieuwe sessie > algemeen, start de gebeurtenissessie bij het opstarten van de server.

Vervolgens ziet u in de sectie Gebeurtenissen dat de lock_deadlock gebeurtenis is gekozen. Voor die gebeurtenis zien we dat er drie acties zijn geselecteerd. Dit betekent dat de knop Configureren is geselecteerd, wat grijs wordt nadat deze is geselecteerd.

Schermopname van SSMS van de gebeurtenissen van de nieuwe sessie > algemene velden (acties).

Vervolgens zien we in de sectie Gebeurtenissen>configureren dat resource_type is ingesteld op PAGE. Dit betekent dat gebeurtenisgegevens niet van de gebeurtenisengine naar het doel worden verzonden als de resource_type waarde niets anders is dan PAGE.

We zien extra predicaatfilters voor de databasenaam en voor een teller.

Schermopname van SSMS van de nieuwe sessiegebeurtenissen > , filterpredicaatvelden (acties).

Vervolgens zien we in de sectie Gegevensopslag dat de event_file als doel is gekozen. Verder zien we dat de optie Bestandsrolover inschakelen is geselecteerd.

Schermopname van SSMS van de nieuwe sessiegegevensopslag > , eventfile_enablefileroleover.

Ten slotte zien we in de sectie Geavanceerd dat de waarde voor maximale verzendlatentie is verlaagd tot 4 seconden.

Schermopname van SSMS van de nieuwe sessie > geavanceerd, maximale verzendlatentie.

Gebeurtenissessie maken in T-SQL

Ongeacht hoe een gebeurtenissessiedefinitie wordt gemaakt, kan de sessie vanuit SSMS worden omgekeerd in een perfect overeenkomend Transact-SQL script. U kunt de voorgaande schermopnamen van nieuwe sessies bekijken en de bijbehorende zichtbare specificaties vergelijken met de componenten in het volgende gegenereerde T-SQL-script CREATE EVENT SESSION .

Als u een gebeurtenissessie wilt reverse-engineeren, kunt u in Objectverkenner met de rechtermuisknop op het sessieknooppunt klikken en vervolgens Scriptsessie kiezen voor>CREATE ** >Klembord.

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

Catalogusweergave SELECT JOIN UNION

De volgende T-SQL-instructie SELECT is alleen lang omdat het meerdere kleine SELECTs samenvat als UNION. Elk van de kleine SELECT's kan zelfstandig worden uitgevoerd. De kleine SELECTs laten zien hoe de verschillende systeemcatalogusweergaven samen JOINed moeten zijn.

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

Uitvoer

In de volgende tabel ziet u de uitvoer van het uitvoeren van de voorgaande SELECT JOIN UNION. De namen en waarden van de uitvoerparameter komen overeen met wat duidelijk zichtbaar is in de voorgaande CREATE EVENT SESSION instructie.

Sessie-Naam Zinstype Parameter-Name Parameter-Waarde
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 [pakket0]. [teller]<=(16)) (Not_Applicable)
event_session_test3 5_TARGET evenement_bestand (Not_Applicable)
event_session_test3 6_TARGET_SET filename c:\temp\event_session_test3_EF.xel
event_session_test3 6_TARGET_SET max_bestandsgrootte 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 opstarttoestand 1

Hiermee wordt de sectie over catalogusweergaven voltooid.

Dynamische beheerweergaven (DMV's)

Deze sectie bevat verschillende Transact-SQL SELECT instructies die elk een specifiek nuttig zakelijk doel dienen. Verder laten de SELECTs zien hoe u de DMV's samen kunt JOIN gebruiken voor elk gewenst gebruik.

Referentiedocumentatie van de DMV's is beschikbaar in Extended Events Dynamische Beheeroverzichten

Alle objecten die u kunt gebruiken in het gebied van uitgebreide gebeurtenissen, zijn afkomstig van pakketten die in het systeem worden geladen. In deze sectie worden alle pakketten en de bijbehorende beschrijvingen vermeld.

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

Uitvoer

Hier volgt de lijst met pakketten.

Package Pakketbeschrijving
filestream Uitgebreide gebeurtenissen voor SQL Server FILESTREAM en FileTable
package0 Standaardpakket. Bevat alle standaardtypen, kaarten, operators, acties en doelen vergelijken
qds Uitgebreide gebeurtenissen voor Query Store
SecAudit Beveiligingscontrolegebeurtenissen
sqlclr Uitgebreide gebeurtenissen voor SQL CLR
sqlos Uitgebreide gebeurtenissen voor SQL-besturingssysteem
SQLSatellite Uitgebreide gebeurtenissen voor SQL Server Machine Learning Services
sqlserver Uitgebreide gebeurtenissen voor Microsoft SQL Server
sqlsni Uitgebreide gebeurtenissen voor Microsoft SQL Server
ucs Uitgebreide gebeurtenissen voor Unified Communications Stack
XtpCompile Uitgebreide gebeurtenissen voor de XTP Compile
XtpEngine Uitgebreide gebeurtenissen voor de XTP Engine
XtpRuntime Uitgebreide gebeurtenissen voor de XTP Runtime

Definities van de voorgaande initialismen:

  • clr = Common Language Runtime van .NET
  • qds = Querygegevensopslag
  • sni = Servernetwerkinterface
  • ucs = Geïntegreerde Communicatiestack (Unified Communications Stack)
  • xtp = Extreme transactieverwerking

SELECTEER alle beschikbare items gesorteerd op type

Het volgende SELECT retourneert één rij voor elk object.

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

Gegevensvelden die beschikbaar zijn voor uw gebeurtenis

Hieronder worden SELECT alle gegevensvelden geretourneerd die specifiek zijn voor uw gebeurtenistype.

  • Let op het WHERE clausule-item: column_type = 'data'.
  • U moet ook de WHERE voorwaarde aanpassen voor 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];

Uitvoer

De volgende rijen zijn geretourneerd door de voorgaande SELECT, WHERE o.name = 'lock_deadlock':

  • Elke rij vertegenwoordigt een optioneel filter voor de sqlserver.lock_deadlock gebeurtenis.
  • De Column-Description kolom wordt weggelaten uit de volgende weergave. De waarde ervan is vaak NULL.
  • Dit is de werkelijke uitvoer, met uitzondering van de kolom Beschrijving die vaak NULLwordt weggelaten.
  • Deze rijen zijn WHERE object_type = 'lock_deadlock'.
Package Event Kolom-voor-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 en gebeurtenisvelden

SELECT Hieronder wordt een JOIN toegevoegd aan de sys.dm_xe_map_values weergave.

Het doel van de SELECT is om de vele velden weer te geven waaruit u kunt kiezen voor uw gebeurtenissessie. De gebeurtenisvelden kunnen op twee manieren worden gebruikt:

  • Als u wilt kiezen welke veldwaarden naar uw doel worden geschreven voor elke gebeurtenis.
  • Om te filteren welke gebeurtenisvoorkomens naar uw doel worden verzonden of welke van uw doel worden onthouden.
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];

Uitvoer

Hierna volgt een steekproef van de werkelijke 100+ rijen met uitvoer van de voorgaande T-SQL SELECT. De rij voor resource_type is relevant voor het predicaatfilter dat in het event_session_test3 voorbeeld elders in dit artikel wordt gebruikt.

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

Parameters voor doelen

Hieronder worden SELECT alle parameters voor uw doelobject geretourneerd. Elke parameter wordt getagd om aan te geven of deze verplicht is. De waarden die u aan parameters toewijst, zijn van invloed op het gedrag van het doel.

  • Let op het WHERE clausule-item: object_type = 'customizable'.
  • U moet ook de WHERE clausulewaarde voor o.name = bewerken.
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];

Uitvoer

De volgende rijen met parameters zijn een kleine subset van de parameters die door de voorgaande SELECTworden geretourneerd.

/***  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 target_data kolom omzetten naar XML

Hiermee DMV SELECT worden de gegevensrijen van het doel van uw actieve gebeurtenissessie geretourneerd. De gegevens worden geconverteerd naar XML, waardoor de geretourneerde cel kan worden geselecteerd voor eenvoudige weergave in SSMS.

  • Als uw gebeurtenissessie is gestopt, retourneert dit SELECT nul rijen.
  • U moet de WHERE clausulewaarde voor s.name = bewerken.
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!>';

Uitvoer, de enige rij, met inbegrip van de XML-cel

Hier is de enige rij die als uitvoer van de voorgaande SELECT is gegenereerd. De kolom XML-Cast bevat een tekenreeks van XML die door SSMS als XML wordt herkend. Daarom begrijpt SSMS dat de XML-Cast cel kan worden geselecteerd.

Voor deze run:

  • De s.name = waarde is ingesteld op een gebeurtenissessie voor de checkpoint_begin gebeurtenis.
  • Het doel was een 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>

Uitvoer, XML wordt mooi weergegeven wanneer de cel is geselecteerd

Wanneer de XML-Cast cel is geselecteerd, wordt de volgende mooie weergave weergegeven.

<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 uit een functie om event_file gegevens op te halen van schijfstation

Stel dat uw gebeurtenissessie enkele gegevens heeft verzameld en later is gestopt. Als uw sessie is gedefinieerd voor het gebruik van het event_file doel, kunt u de gegevens nog steeds ophalen door de functie sys.fn_xe_target_read_fileaan te roepen.

  • U moet uw pad en bestandsnaam bewerken in de parameter van de functie-aanroep, voordat u dit SELECTuitvoert.
    • Let niet op de extra cijfers die het SQL-systeem insluit in uw werkelijke. XEL-bestandsnamen telkens wanneer u de sessie opnieuw start. Geef gewoon de normale hoofdnaam en extensie op.
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;

Uitvoer, rijen geretourneerd door de SELECT FROM-opdracht van de functie

Vervolgens worden de rijen geretourneerd door de voorgaande SELECT FROM functie. De Event-Data-As-XML XML-kolom bevat de gegevens die specifiek betrekking hebben op de gebeurtenis.

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>

Uitvoer, één XML-cel

Hier volgt de inhoud van de eerste XML-cel, uit de voorgaande geretourneerde rijenset.

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