扩展事件系统视图中的 SELECT 和 JOIN 查询

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 预览版中的 SQL 数据库

本文介绍与扩展事件相关的两组系统视图。 本文阐释了:

  • 如何 JOIN 查看各种系统视图。
  • 如何 SELECT 从系统视图中提取特定类型的信息。

扩展事件有两组系统视图:

目录视图

  • 这些视图存储有关 CREATE EVENT SESSION (Transact-SQL) 创建的每个事件会话的定义的信息。 但是,这些视图不知道曾经是否启动运行了任何会话。
    • 例如,如果 SSMS 对象资源管理器 未定义事件会话,则 sys.server_event_session_targets 视图中的 SELECTing 将返回零行。
  • 大多数示例都是针对 SQL Server 和 Azure SQL 托管实例编写的。 但是,通过轻微编辑,方法是将 DMV 名称中的 server 更改为 database,它们可以在 Azure SQL 数据库和 Fabric 中的 SQL 数据库上运行。
    • sys.server_event_session* 是 SQL Server 和 Azure SQL 托管实例上的名称前缀。
    • sys.database_event_session* 是 Fabric 中 Azure SQL 数据库和 SQL 数据库的名称前缀。
    • 有关每个视图的详细信息,请参阅 扩展事件目录视图

动态管理视图 (DMV)

  • 用于存储正在运行的事件会话的当前活动信息。 但是这些 DMV 对会话定义知之甚少。

    • 即使当前停止了所有事件会话,视图SELECT中的某个sys.dm_xe_packages会话仍会返回行,因为服务器启动会将各种包加载到活动内存中。
    • 出于同样的原因,sys.dm_xe_objectssys.dm_xe_object_columns 仍然返回行。
  • 扩展事件的 DMV 的名称前缀为:

    • sys.dm_xe_* 是 SQL Server 和 Azure SQL 托管实例上的名称前缀。
    • sys.dm_xe_database_* 通常是 Azure SQL 数据库和 Fabric 中 SQL 数据库的名称前缀。

Permissions

若要从系统视图中SELECT,需要以下权限:

  • SQL Server 2019 (15.x) 和以前的版本需要 VIEW SERVER STATE 对服务器具有权限。
  • SQL Server 2022 (16.x) 及更高版本需要 VIEW SERVER PERFORMANCE STATE 对服务器具有权限。
  • Fabric 中的 Azure SQL 数据库和 SQL 数据库需要 VIEW DATABASE PERFORMANCE STATE 数据库中的权限。

目录视图

为此页,请使用 SSMS 或 T-SQL创建扩展事件会话。 始终使用 SSMS 的最新更新

在 SQL Server Management Studio 中创建会话 (SSMS)

在 SSMS 中,在其对象资源管理器中,可以通过展开管理>来启动“新建会话”对话框,然后右键单击“会话>新建会话”。

在“新建会话”的大对话框中标记为“常规”的第一部分中,我们看到已选中选项“在服务器启动时启动事件会话”。

“新建会话 > 常规”的 SSMS 屏幕截图,在服务器启动时启动事件会话。

接下来,在“ 事件 ”部分,我们看到 lock_deadlock 已选择该事件。 对于该事件,我们看到已选择三个操作。 这意味着已选择“ 配置 ”按钮,该按钮在被选中后变为灰色。

SSMS 中的新会话事件、全局字段(操作)的屏幕截图。

接下来,在“ 事件>配置 ”部分中,我们看到 resource_type 已设置为 PAGE。 这意味着,如果 resource_type 值不是 PAGE任何其他值,则事件数据将不会从事件引擎发送到目标。

另外我们还看到数据库名称和计数器的谓词筛选器。

SSMS中新会话>事件的屏幕截图,筛选谓词字段(操作)。

接下来在“数据存储”部分中,我们看到已选择 event_file 作为目标。 此外,我们看到已选中“启用文件滚动更新”选项。

来自 SSMS 的新会话数据存储屏幕截图,eventfile_enablefileroleover。

最后,在“高级”部分中,我们看到“最大调度滞后时间”的值已减少到 4 秒。

来自 SSMS 的新会话 > 高级、最大调度延迟时间的屏幕截图。

在 T-SQL 中创建事件会话

无论事件会话的定义如何创建,都可以在 SSMS 中通过反向工程将该会话转换为完全一致的 Transact-SQL 脚本。 可以检查前面的 “新建会话” 屏幕截图,并将其可见规范与以下生成的 T-SQL CREATE EVENT SESSION 脚本中的子句进行比较。

若要反向设计事件会话,请在对象资源管理器中右键单击会话节点,然后选择“脚本会话”作为>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 语句通过 UNION 连接在一起。 任何一个小的 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 (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].[counter] < = (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

至此完成了有关目录视图的章节。

动态管理视图 (DMV)

本部分提供了多个 Transact-SQL SELECT 语句,每个语句提供特定的有用业务用途。 此外,SELECT 还展示了如何将 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-Description
filestream SQL Server FILESTREAM 和 FileTable 的扩展事件
package0 默认包。 包含所有标准类型、映射、比较运算符、操作和目标
qds 查询存储的扩展事件
SecAudit 安全审核事件
sqlclr 扩展事件 SQL CLR
sqlos SQL 操作系统的扩展事件
SQLSatellite SQL Server 机器学习服务的扩展事件
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'.
  • 此外,您还需要编辑o.name =WHERE子句值。
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除外。
  • 这些行是 WHERE object_type = 'lock_deadlock'
程序包 事件 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包含一个JOINsys.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'.
  • 此外,还需要编辑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];

输出

以下参数行是上述 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

DMV SELECT 从您当前事件会话的目标返回数据行。 数据被转换为 XML 格式,这使其返回的单元格可以选择从而在 SSMS 中轻松显示。

  • 如果事件会话已停止,SELECT 将返回零行。
  • 您需要编辑WHEREs.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 包含一串 XML 字符串,SSMS 识别为 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 语句返回的行

接下来是之前由函数 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>