Bagikan melalui


SELECT dan JOIN dari Tampilan Sistem untuk Extended Events

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Artikel ini menjelaskan dua set tampilan sistem yang terkait dengan Peristiwa yang Diperluas. Artikel ini mengilustrasikan:

  • Cara untuk JOIN berbagai tampilan sistem.
  • Cara SELECT jenis informasi tertentu dari tampilan sistem.

Ada dua set tampilan sistem untuk Kejadian yang Diperluas:

Tampilan katalog

  • Tampilan ini menyimpan informasi tentang definisi setiap sesi peristiwa yang dibuat oleh CREATE EVENT SESSION (Transact-SQL). Tetapi tampilan ini tidak tahu apa-apa tentang apakah ada sesi yang pernah mulai berjalan.
    • Misalnya, jika Object Explorer SSMS menunjukkan bahwa tidak ada sesi peristiwa yang didefinisikan, maka melakukan SELECT dari tampilan sys.server_event_session_targets akan mengembalikan nol baris.
  • Sebagian besar contoh ditulis untuk SQL Server dan Azure SQL Managed Instance. Tetapi dengan pengeditan kecil, mereka akan berjalan di Azure SQL Database, dan database SQL di Fabric dengan mengubah server dalam nama DMV menjadi database:
    • sys.server_event_session* adalah awalan nama di SQL Server dan Azure SQL Managed Instance.
    • sys.database_event_session* adalah awalan nama pada Azure SQL Database dan database SQL di Fabric.
    • Untuk informasi selengkapnya tentang masing-masing, lihat Tampilan Katalog Peristiwa yang Diperluas.

Tampilan manajemen dinamis (DMV)

  • Simpan informasi tentang aktivitas sesi peristiwa yang sedang berjalan saat ini. Tetapi DMV ini tahu sedikit tentang definisi sesi.

    • Bahkan jika semua sesi acara saat ini dihentikan, SELECT dari tampilan sys.dm_xe_packages tetap mengembalikan baris karena berbagai paket dimuat ke dalam memori aktif saat server dinyalakan.
    • Untuk alasan yang sama, sys.dm_xe_objects dan sys.dm_xe_object_columns masih mengembalikan baris.
  • Awalan nama untuk DMV Kejadian yang Diperluas adalah:

    • sys.dm_xe_* adalah awalan nama di SQL Server dan Azure SQL Managed Instance.
    • sys.dm_xe_database_* umumnya adalah awalan nama pada Azure SQL Database dan database SQL di Fabric.

Permissions

Untuk SELECT dari tampilan sistem, izin berikut diperlukan:

  • SQL Server 2019 (15.x) dan versi sebelumnya memerlukan VIEW SERVER STATE izin di server.
  • SQL Server 2022 (16.x) dan versi yang lebih baru memerlukan VIEW SERVER PERFORMANCE STATE izin di server.
  • Database Azure SQL dan database SQL di Fabric memerlukan VIEW DATABASE PERFORMANCE STATE izin dalam database.

Tampilan katalog

Untuk tujuan halaman ini, buat sesi Extended Events dengan SSMS atau dengan T-SQL. Instal versi terbaru SQL Server Management Studio (SSMS).

Membuat sesi di SQL Server Management Studio (SSMS)

Di SSMS, di Object Explorer, Anda dapat memulai dialog Sesi Baru dengan memperluas Manajemen>Peristiwa Diperluas, lalu klik kanan Sesi>Sesi Baru.

Dalam dialog Sesi Baru besar, di bagian pertamanya berlabel Umum, kita melihat opsi telah dipilih untuk Memulai sesi peristiwa di startup server.

Cuplikan layar dari SSMS sesi acara baru > umum, mulai sesi acara saat startup server.

Selanjutnya di bagian Peristiwa , kita melihat lock_deadlock peristiwa dipilih. Untuk peristiwa itu, kita melihat bahwa tiga Tindakan telah dipilih. Ini berarti tombol Konfigurasi dipilih, yang menjadi abu-abu setelah dipilih.

> Events, Global Fields (Actions).

Selanjutnya, masih pada bagianKonfigurasi>, kita melihat bahwa resource_type telah diatur ke PAGE. Ini berarti bahwa data peristiwa tidak akan dikirim dari mesin peristiwa ke target jika nilai resource_type adalah apa pun selain PAGE.

Kami melihat filter predikat tambahan untuk nama database dan untuk penghitung.

> Events, Filter Predicate Fields (Actions).

Selanjutnya di bagian Penyimpanan Data, kita melihat event_file telah dipilih sebagai target. Selanjutnya, kita melihat bahwa opsi Aktifkan peranover file telah dipilih.

> Data Storage, eventfile_enablefileroleover.

Terakhir, pada bagian Tingkat Lanjut , kita melihat bahwa nilai Latensi pengiriman maksimum berkurang menjadi 4 detik.

Cuplikan layar dari SSMS Sesi Tingkat Lanjut yang Baru> Latensi maksimum pengiriman.

Membuat sesi acara di T-SQL

Tidak peduli bagaimana definisi sesi peristiwa dibuat, dari SSMS sesi dapat direkayasa ulang menjadi skrip Transact-SQL yang sangat sesuai. Anda dapat memeriksa cuplikan layar Sesi Baru sebelumnya dan membandingkan spesifikasi yang terlihat dengan klausul dalam skrip T-SQL CREATE EVENT SESSION yang dihasilkan berikut.

Untuk menganalisis kembali sesi peristiwa, di Object Explorer Anda dapat mengklik kanan simpul sesi Anda, lalu memilih Skripsikan Sesi sebagai>CREATE untuk menyalin ke >Clipboard.

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

Tampilan katalog SELECT JOIN UNION

Pernyataan T-SQL SELECT berikut hanya panjang karena menggabungkan beberapa SELECT kecil menjadi satu dengan UNION. Salah satu SELECT kecil dapat dijalankan sendiri. SELECT kecil menunjukkan bagaimana berbagai tampilan katalog sistem harus diSatukan.

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

Tabel berikut menunjukkan output dari menjalankan SELECT JOIN UNION sebelumnya. Nama parameter output dan nilai dipetakan ke apa yang terlihat secara biasa dalam pernyataan sebelumnya CREATE EVENT SESSION .

Nama Sesi Jenis Klausa Nama Parameter Nilai Parameter
event_session_test3 1_EVENT Nama Peristiwa 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]. [penghitung]<=(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

Ini melengkapi bagian pada tampilan katalog.

Tampilan manajemen dinamis (DMV)

Bagian ini menyediakan beberapa pernyataan Transact-SQL SELECT yang masing-masing melayani tujuan bisnis tertentu yang berguna. Selanjutnya, SELECTs menunjukkan bagaimana Anda dapat menggabungkan DMV untuk setiap penggunaan baru yang Anda inginkan.

Dokumentasi referensi DMV tersedia di Extended Events Dynamic Management Views

Semua objek yang dapat Anda gunakan di area peristiwa yang diperluas berasal dari paket yang dimuat ke dalam sistem. Bagian ini mencantumkan semua paket dan deskripsinya.

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

Output

Berikut adalah daftar paket.

Paket Deskripsi Paket
filestream Kejadian yang diperluas untuk SQL Server FILESTREAM dan FileTable
package0 Paket default. Berisi semua jenis standar, peta, membandingkan operator, tindakan, dan target
qds Kejadian yang diperluas untuk Penyimpanan Kueri
SecAudit Peristiwa Audit Keamanan
sqlclr Event yang diperpanjang untuk SQL CLR
sqlos Peristiwa yang diperluas untuk Sistem Operasi SQL
SQLSatellite Peristiwa yang diperluas untuk SQL Server Machine Learning Services
sqlserver Acara yang diperluas untuk Microsoft SQL Server
sqlsni Acara yang diperluas untuk Microsoft SQL Server
ucs Kejadian yang diperluas untuk Tumpukan Komunikasi Terpadu
XtpCompile Peristiwa yang diperluas untuk Kompilasi XTP
XtpEngine Peristiwa yang diperluas untuk Mesin XTP
XtpRuntime Peristiwa yang diperluas untuk XTP Runtime

Definisi inisialisme sebelumnya:

  • clr = Common Language Runtime dari .NET
  • qds = Penyimpanan Data untuk Kuari
  • sni = Antarmuka Jaringan Server
  • ucs = Tumpukan Komunikasi Terpadu
  • xtp = Pemrosesan Transaksi Ekstrem

PILIH semua item yang tersedia yang diurutkan menurut jenis

Berikut ini SELECT mengembalikan satu baris untuk setiap objek.

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

Bidang data tersedia untuk acara Anda

Berikut ini SELECT mengembalikan semua bidang data yang khusus untuk jenis peristiwa Anda.

  • Silakan perhatikan klausa item WHERE: column_type = 'data'.
  • Selain itu, Anda perlu mengedit nilai klausul untuk WHEREo.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

Baris berikut dikembalikan oleh elemen sebelumnya SELECT, WHERE o.name = 'lock_deadlock':

  • Setiap baris mewakili filter opsional untuk peristiwa tersebut sqlserver.lock_deadlock .
  • Kolom Column-Description dihilangkan dari tampilan berikut. Nilainya sering NULL.
  • Ini adalah output aktual, kecuali untuk kolom Deskripsi yang dihilangkan yang sering NULL.
  • Baris-baris ini adalah WHERE object_type = 'lock_deadlock'.
Paket Kejadian Kolom-untuk-Predikat-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 dan bidang peristiwa

Berikut ini SELECT termasuk JOIN ke tampilan sys.dm_xe_map_values.

Tujuan SELECT adalah menampilkan berbagai bidang yang dapat Anda pilih untuk sesi acara Anda. Bidang peristiwa dapat digunakan dengan dua cara:

  • Untuk memilih bidang nilai mana yang akan ditulis ke target Anda untuk setiap kejadian peristiwa.
  • Untuk memfilter kejadian peristiwa mana yang akan dikirim ke versus disimpan dari target Anda.
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

Selanjutnya adalah sampel dari lebih dari 100 baris keluaran aktual dari T-SQL SELECT sebelumnya. Baris pada resource_typerelevan dengan pemfilteran predikat yang digunakan dalam contoh event_session_test3 di bagian lain artikel ini.

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

Parameter-parameter untuk sasaran-sasaran

Berikut ini SELECT mengembalikan setiap parameter untuk target Anda. Setiap parameter ditandai untuk menunjukkan apakah itu wajib. Nilai yang Anda tetapkan ke parameter memengaruhi perilaku target.

  • Silakan perhatikan klausa item WHERE: object_type = 'customizable'.
  • Selain itu, Anda perlu mengedit nilai klausul untuk WHEREo.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

Baris parameter berikut adalah subset kecil dari yang dikembalikan oleh sebelumnya 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
***/

Mengonversi kolom target_data dengan DMV SELECT ke XML

Ini DMV SELECT mengembalikan baris data dari target sesi peristiwa aktif Anda. Data ditransmisikan ke XML, yang membuat sel yang dikembalikan dapat dipilih untuk tampilan yang mudah di SSMS.

  • Jika sesi acara Anda dihentikan, ini SELECT akan mengembalikan baris nol.
  • Anda perlu mengubah nilai klausul pada WHERE untuk 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!>';

Output, satu-satunya baris, termasuk sel XML-nya

Berikut adalah satu-satunya baris yang merupakan output dari sebelumnya SELECT. Kolom XML-Cast berisi string XML yang dipahami SSMS adalah XML. Oleh karena itu, SSMS memahami bahwa ia harus membuat XML-Cast agar sel dapat dipilih.

Untuk eksekusi ini:

  • Nilai s.name = diatur ke sesi peristiwa untuk peristiwa tersebut checkpoint_begin .
  • Targetnya adalah 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>

Output, XML ditampilkan dengan cantik saat sel dipilih

Saat sel XML-Cast dipilih, tampilan cantik berikut ini muncul.

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

Gunakan perintah SELECT dalam fungsi untuk mengambil data event_file dari drive disk.

Misalkan sesi peristiwa Anda mengumpulkan beberapa data dan kemudian dihentikan. Jika sesi Anda didefinisikan untuk menggunakan target event_file, Anda masih dapat mengambil data dengan memanggil fungsi sys.fn_xe_target_read_file.

  • Anda harus mengedit jalur dan nama file Anda ke dalam parameter panggilan fungsi, sebelum Anda menjalankan ini SELECT.
    • Jangan perhatikan digit tambahan yang disematkan sistem SQL ke dalam aktual Anda. Nama file XEL setiap kali Anda memulai ulang sesi Anda. Cukup berikan nama akar dan ekstensi normal.
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;

Output, baris yang dikembalikan oleh SELECT FROM fungsi

Selanjutnya adalah baris yang dikembalikan oleh fungsi sebelumnya SELECT FROM . Kolom Event-Data-As-XML XML berisi data yang secara khusus berkaitan dengan kejadian peristiwa.

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>

Output, satu sel XML

Berikut adalah konten sel XML pertama, dari kumpulan baris yang dikembalikan sebelumnya.

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