共用方式為


延伸事件的系統檢視中的 SELECT 和 JOIN

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

本文說明與擴充事件相關的兩組系統檢視。 本文說明︰

  • 如何檢視各種 JOIN 系統視圖。
  • 如何從 SELECT 系統視圖中獲取特定類型的信息。

擴充事件有兩組系統檢視表:

目錄檢視

  • 這些視圖會儲存 CREATE EVENT SESSION (Transact-SQL) 所建立之每一個事件階段作業定義的相關資訊。 但是這些檢視卻不知道任一工作階段是否已開始執行。
    • 例如,如果 SSMS 物件總管 顯示未定義任何事件會話,則檢視 sys.server_event_session_targets 中的 SELECTing 會傳回零資料列。
  • 大部分的範例都是針對 SQL Server 和 Azure SQL 受控執行個體撰寫的。 但只要做少許調整,它們就可能在 Azure SQL 資料庫和 Fabric 的 SQL 資料庫中運行,方法是將 DMV 名稱中的server變更為database:
    • sys.server_event_session* 是 SQL Server 和 Azure SQL 受控執行個體上的名稱前置詞。
    • sys.database_event_session* 是 Azure SQL 資料庫和 Fabric 中 SQL 資料庫上的名稱前置詞。
    • 如需每一個的詳細資訊,請參閱 擴充事件型錄檢視。

動態管理檢視 (DMV)

  • 儲存執行事件工作階段的「目前活動」 相關資訊。 但是這些 DMV 對工作階段定義卻知之甚少。

    • 即使目前所有事件階段作業都已停止,來自視圖的 SELECT 仍然會傳回列,因為伺服器啟動時,各種套件會被載入至作用中記憶體。
    • 基於同樣的原因, sys.dm_xe_objectssys.dm_xe_object_columns 仍然傳回行。
  • 擴充事件 DMV 的名稱前置詞是:

    • sys.dm_xe_* 是 SQL Server 和 Azure SQL 受控執行個體上的名稱前置詞。
    • sys.dm_xe_database_* 通常是 Azure SQL 資料庫和 Fabric 中 SQL 資料庫上的名稱前置詞。

權限

若要從系統檢視中SELECT,需要具備下列權限:

  • SQL Server 2019 (15.x) 和舊版需要 VIEW SERVER STATE 伺服器的許可權。
  • SQL Server 2022 (16.x) 和更新版本需要 VIEW SERVER PERFORMANCE STATE 伺服器的許可權。
  • Azure SQL 資料庫和 Fabric 中的 SQL 資料庫需要 VIEW DATABASE PERFORMANCE STATE 資料庫中的許可權。

目錄檢視

基於此頁面的目的,請使用 SSMS 或 T-SQL建立擴充事件會話。 安裝最新版本的 SQL Server Management Studio(SSMS)。

在 SQL Server Management Studio (SSMS) 中建立工作階段

在 SSMS 的 物件總管 中,您可以展開 管理>,然後以滑鼠右鍵按一下 工作階段>,以啟動 新增工作階段 對話方塊。

在大型 [新增工作階段] 對話方塊標示為 [一般] 的第一個區段中,我們看到已選取 [在伺服器啟動時啟動事件工作階段] 選項。

SSMS 的螢幕擷取畫面:新工作階段 > 一般,伺服器啟動時啟動事件工作階段。

接下來在 「事件」 區段中,我們看到 lock_deadlock 事件已選擇。 我們看到該事件已選取三個 [動作] 。 這表示已選取「 設定」 按鈕,該按鈕在選取後會變為灰色。

> Events, Global Fields (Actions).

接下來,仍然在 事件>配置 部分,我們看到 resource_type 已設定為 PAGE。 這表示,如果 resource_type 的值不是 PAGE,則事件資料將不會從事件引擎傳送至目標。

我們會看到資料庫名稱和計數器的其他述詞篩選。

> Events, Filter Predicate Fields (Actions).

接著在 [資料儲存區] 區段,我們看到 event_file 已被選為目標。 而且,我們還看到已選取 [啟用檔案換用] 選項。

> Data Storage, eventfile_enablefileroleover.

最後,在 [進階] 區段看到 [分派延遲上限] 值減少到 4 秒。

> Advanced, Maximum dispatch latency.

在 T-SQL 中建立事件會話

不論如何建立事件會話定義,都可以從 SSMS 將會話反向工程化為完全相符的 Transact-SQL 腳本。 您可以檢查上述 新工作階段 螢幕快照,並將其可見規格與下列產生的 T-SQL CREATE EVENT SESSION 腳本中的子句進行比較。

若要對事件工作階段進行逆向工程,您可以在「物件總管」中,以滑鼠右鍵按一下您的工作階段節點,然後選擇「Script Session as>CREATE」,再**>剪貼簿

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

目錄檢視 SELECT、JOIN、UNION

下列 T-SQL SELECT 陳述式很長,因為它會將數個小型 SELECT 結合在一起。 任何小型的 SELECT 都可以獨立執行。 小型的 SELECT 顯示各種系統類別目錄檢視應該如何 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]
;

輸出

下表顯示執行上述 SELECT JOIN UNION的輸出。 輸出參數名稱和值會對應至上述 CREATE EVENT SESSION 陳述式中清楚可見的內容。

Session-Name Clause-Type Parameter-Name Parameter-Value
event_session_test3 1_EVENT Event-Name lock_deadlock
event_session_test3 2_EVENT_SET collect_database_name 1
event_session_test3 3_EVENT_ACTION sqlserver.client_hostname (不適用)
event_session_test3 3_EVENT_ACTION sqlserver.collect_system_time (不適用)
event_session_test3 3_EVENT_ACTION sqlserver.event_sequence (不適用)
event_session_test3 4_EVENT_PREDICATES ([sqlserver]。[equal_i_sql_unicode_string]([database_name],N'InMemTest2') AND [package0]。[計數器]<=(16)) (不適用)
event_session_test3 5_TARGET event_file (不適用)
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

如此即完成目錄檢視區段。

動態管理檢視 (DMV)

本節提供數個 Transact-SQL SELECT 陳述式,每個陳述式都有特定的實用商業用途。 此外,SELECT 演示瞭如何將 JOIN DMV 組合在一起以實現您想要的任何新用途。

DMV 的參考檔可在擴充事件動態管理檢視取得

所有您可以在擴充事件區域中使用的物件,都來自系統載入的封裝。 本節會列出所有封裝及其說明。

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

輸出

以下為封裝清單。

Package Package-Description
filestream SQL Server FILESTREAM 和 FileTable 的擴充事件
package0 預設套件。 包含所有標準類型、對應、比較運算子、動作和目標
qds 查詢存放區的擴充事件
SecAudit 安全性稽核事件
sqlclr 擴充事件 SQL CLR
sqlos SQL 作業系統的擴充事件
SQLSatellite SQL Server Machine Learning Services 的擴充事件
sqlserver Microsoft SQL Server 的擴充事件
sqlsni Microsoft SQL Server 的擴充事件
ucs 整合通訊堆疊的擴充事件
XtpCompile XTP 編譯的擴充事件
XtpEngine XTP 引擎的擴充事件
XtpRuntime XTP 執行階段的擴充事件

前列縮寫定義︰

  • clr = .NET 的公共語言運行時
  • qds = 查詢資料存放區
  • sni = 伺服器網路介面
  • ucs = 統一通訊堆疊
  • xtp = 極限交易處理

選擇所有按類型排序的可用項目

以下會 SELECT 對每個物件傳回一列。

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

可用於活動的資料欄位

下列 SELECT 會傳回事件型別特有的所有資料欄位。

  • 請注意該WHERE子句項目:column_type = 'data'
  • 此外,您需要編輯 WHERE 的子句值 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];

輸出

由先前的 SELECTWHERE o.name = 'lock_deadlock' 返回下列行:

  • 每一行代表 sqlserver.lock_deadlock 事件的選用的篩選器。
  • 以下顯示中省略了該 Column-Description 列。 它的價值往往是 NULL
  • 這是實際輸出,唯一省略的是通常為 NULL 的 Description 欄位。
  • 這些列是 WHERE object_type = 'lock_deadlock'
Package 事件 Column-for-Predicate-Data
sqlserver lock_deadlock associated_object_id
sqlserver lock_deadlock database_id
sqlserver lock_deadlock database_name
sqlserver lock_deadlock deadlock_id
sqlserver lock_deadlock duration
sqlserver lock_deadlock lockspace_nest_id
sqlserver lock_deadlock lockspace_sub_id
sqlserver lock_deadlock lockspace_workspace_id
sqlserver lock_deadlock mode
sqlserver lock_deadlock object_id
sqlserver lock_deadlock owner_type
sqlserver lock_deadlock resource_0
sqlserver lock_deadlock resource_1
sqlserver lock_deadlock resource_2
sqlserver lock_deadlock resource_description
sqlserver lock_deadlock resource_type
sqlserver lock_deadlock transaction_id

sys.dm_xe_map_values和事件欄位

以下SELECT包括到JOIN檢視的sys.dm_xe_map_values

顯示許多可供您選擇用於事件會話的欄位的用途是 SELECT 。 事件欄位有兩種用法︰

  • 選擇要將哪些欄位值寫入每次事件發生時的目標位置。
  • 篩選會傳送的發生事件與從目標保留的發生事件。
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];

輸出

接下來是來自上述 T-SQL SELECT 實際輸出的超過 100 列的取樣。 resource_type 的行與在文章其他地方使用的event_session_test3範例中的述詞篩選相關

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

目標的參數

下列 SELECT 會傳回目標的每個參數。 每個參數都會標記,以指出它是否為強制。 您指派給參數的值會影響目標的行為。

  • 請注意該WHERE子句項目:object_type = 'customizable'
  • 此外,您需要編輯 WHERE 的子句值 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];

輸出

下列參數列是上述 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 將資料行target_data轉換成 XML

這會從您的活動事件會話目標中回傳資料列。 資料會轉換成 XML,這可讓傳回的儲存格可供選取,以便在 SSMS 中輕鬆顯示。

  • 如果您的事件會話已停止,這 SELECT 傳回零列。
  • 您需要編輯 WHERE 的子句值 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!>';

輸出:唯一的資料列,包括其 XML 儲存格。

這是從上述 SELECT輸出的唯一資料列。 資料行 XML-Cast 包含 SSMS 理解為 XML 的 XML 字串。 因此,SSMS 知道它需要使XML-Cast儲存格可選取。

為執行此作業︰

  • s.name = 值已設定為 checkpoint_begin 事件的事件會話。
  • 目標是 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>

輸出,選擇單元格時顯示漂亮的 XML

選取 XML-Cast 儲存格時,會出現下列漂亮的顯示。

<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 指令檢索磁碟機上的 event_file 資料

假設事件工作階段在收集了某些資料後停止。 如果您的工作階段被定義為使用 event_file 作為目標,您仍然可以透過呼叫函數 sys.fn_xe_target_read_file 來取得資料。

  • 您必須先將路徑和檔名編輯為函數呼叫的參數,然後才能執行此 SELECT
    • 不用理會 SQL 系統在工作階段每次重新啟動時,嵌入到實際 .XEL 檔案名稱中的額外數字。 只要提供標準的根名稱和副檔名即可。
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;

輸出:SELECT FROM 函數傳回的資料列。

接下來是前面 SELECT FROM 函數傳回的資料列。 Event-Data-As-XML XML 直欄包含專門與事件發生相關的資料。

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>

輸出:一個 XML 資料格。

以下是第一個 XML 資料格的內容,來自前述的傳回資料列集。

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