在 SQL Server Management Studio 中查看事件数据

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

本文介绍如何使用 SQL Server Management Studio (SSMS) 查看扩展事件的目标数据。 本文说明了如何:

  • 以各种方式打开并查看目标数据。
  • 使用扩展事件的专用菜单或工具栏将目标数据导出为各种格式。
  • 查看时或在导出前对数据进行操作。 可以查看、导出、筛选和聚合事件数据。

先决条件

本文假定你已了解如何创建和启动事件会话。 有关如何创建事件会话的说明之前在下面的文章中已演示:

快速入门:扩展事件

建议使用最新版本的 SSMS。 从下载 SQL Server Management Studio (SSMS) 处下载软件。

与 Azure SQL 数据库之间的差异

SQL Server 和 Azure SQL 数据库中的扩展事件之间存在某些差异。

  • Azure SQL 数据库的 event_file 目标不能是本地驱动器上的文件。 而必须是 Azure 存储容器。 当连接到 Azure SQL 数据库中的数据库时,SSMS UI 将寻求存储容器,而不是本地路径和文件名称。
  • SSMS UI 中禁用查看实时数据。 这是因为 Azure SQL 数据库不提供此功能。
  • 一些扩展事件会话与 SQL Server 一同安装,例如 system_health 会话。 Azure SQL 数据库不提供这些会话。

本文是从 SQL Server 的角度来撰写的。 本文使用的是 event_file 目标,SQL Server 和 Azure SQL 数据库的扩展事件中直接实施此目标。

有关特定于 Azure SQL 数据库的扩展事件的文档,请参阅 Azure SQL 数据库中的扩展事件

打开 SSMS 事件查看器 UI

可以通过以下方法之一访问 SSMS 事件查看器 UI:

  • 主菜单文件>打开>文件,然后浏览找到 xel 文件。
  • 在“对象资源管理器”的>“管理”中,右键单击“扩展事件”。
  • 扩展事件菜单,和扩展事件工具栏
  • 在显示目标数据的选项卡式窗格中右键单击

在 SSMS 中查看 event_file 数据

可通过多种方式在 SSMS UI 中查看 event_file 目标数据。 指定 event_file 目标时,可以设置其文件路径和名称,包括 xel 扩展名。

  • 每次启动事件会话时,扩展事件都会向文件名添加数字后缀,让文件名是唯一的。
    • 示例:Checkpoint_Begins_ES_0_131103935140400000.xel
  • xel 文件是二进制文件。 不应在文本编辑器(如记事本)中打开此类文件。
    • 使用“文件>打开>合并扩展事件文件”对话框,在 SSMS 事件查看器 UI 中打开多个事件文件。

SSMS 可以显示大多数扩展事件目标的数据。 但是对于不同的目标显示也有所不同: 例如:

  • event_file:event_file 目标的数据显示在事件查看器中,提供筛选、聚合以及其他功能。
  • ring_buffer: 来自 ring-buffer 目标的数据显示为 XML 文件。

SSMS 不能显示来自 etw_classic_sync_target 目标的数据。

使用“文件 > 打开 > 文件”,打开 xel 文件

可以使用“文件>打开>文件”,从 SSMS 主菜单打开单个 xel 文件。 还可以将 xel 文件拖放到 SSMS 中。

查看目标数据

查看目标数据 选项显示到目前为止已捕获的数据。 在“对象资源管理器”中,可以展开节点,然后右键单击:

  • 管理”>“扩展事件”>“会话”>“[your-session]”>“[your-target-node]”>“查看目标数据”。

目标数据显示在 SSMS 中的选项卡式窗格中,如下所示:

目标 >“查看目标数据”的屏幕截图。

注意

查看目标数据”显示与会话关联的所有 xel 文件中的数据。 每个“启动-停止”周期都将创建一个文件,并且在文件名中添加由时间转换而来的数值,但是每个文件共享相同的根名称。 当文件大小超出 MAX_FILE_SIZE 参数所指定的最大文件大小时,还会创建滚动更新 xel 文件。

查看实时数据

当事件会话处于运行状态时,你可能想要在目标接收数据的同时查看实时的事件数据。

  • 管理”>“扩展事件”>“会话”>“[your-session]”>“查看实时数据”。

会话 >“监视实时数据”的屏幕截图。

数据显示按你指定的时间间隔更新。 请在以下位置查看 最大调度滞后时间

  • “扩展事件”>“会话”>“[your-session]”>“属性”>“高级”>“最大调度滞后时间”

使用 sys.fn_xe_file_target_read_file() 函数查看事件数据

sys.fn_xe_file_target_read_file() 函数可返回代表捕获的事件的每一行的行集。 事件数据以 XML 形式返回。 XQuery 可用于呈现事件数据的关系。

导出目标数据

在 SSMS 事件查看器中显示事件数据后,可以通过执行以下操作将其导出为各种格式:

导出显示的数据的屏幕截图,“扩展事件”>“导出到”。

  1. 在主菜单上选择“扩展事件”。
  2. 选择“导出为”,然后选择一种格式。

操作显示中的数据

SSMS UI 提供了几种方式来操作数据,而不只是查看数据。

数据显示中的上下文菜单

右键单击时,数据显示中的不同位置的上下文菜单各不相同。

右键单击某个数据单元格。

以下屏幕截图显示右键单击数据显示中的单元格时获得的内容菜单。 该屏幕截图中还显示了“复制”菜单项的扩展项。

屏幕截图显示右键单击数据显示中的一个单元格。

右键单击列标题

以下屏幕截图显示右键单击“时间戳”标题时获得的上下文菜单。

屏幕截图显示右键单击数据显示中的列标题或详细信息网格。

选择列,合并列

可以使用“选择列”选项控制哪些数据列显示,哪些不显示。 你可以在不同位置找到“选择列”菜单项:

  • 在“扩展事件”菜单中。
  • 在“扩展事件”工具栏上。
  • 在数据显示的标题的上下文菜单中。

选择“选择列”后,将显示相同名称的对话框。

屏幕截图显示“选择列”对话框,也提供了“合并列”选项。

合并列

选择列”对话框中有一部分专门用于将多个列合并为一个列,以用于显示和数据导出。

筛选器

SSMS 事件查看器中的筛选器具有以下功能:

  • 时间戳列限制返回的数据
  • 按列值进行筛选

时间筛选器和列筛选器的关系是布尔 AND

“筛选器”对话框上的时间范围和列筛选器的屏幕截图。

分组和聚合

通过匹配指定列的值将行组合在一起是对数据进行聚合的第一步。

分组

在“扩展事件”工具栏中,“分组”按钮可启动一个对话框,你可以在该对话框中按给定的列对显示数据进行分组。 下面的屏幕截图显示了按“名称”列进行分组的对话框。

显示已选择“分组”的工具栏和“分组”对话框的屏幕截图。

完成分组后,将以新的方式显示,如下所示。

分组后新显示的屏幕截图。

聚合

在对显示数据进行分组后,可以继续使用其他列对数据进行聚合。 以下屏幕截图显示了按“计数”对分组数据进行聚合。

显示已选择“聚合”的工具栏和“聚合”对话框的屏幕截图。

完成聚合后,将以新的方式显示,如下所示。

展示 COUNT 值已添加的显示屏幕截图。

查看运行时查询计划

query_post_execution_showplan 事件让你可以在 SSMS UI 中查看实际的查询计划(其中包含运行时统计信息)。 当显示“详细信息”窗格时,可以在“查询计划”选项卡中看到查询计划图。将鼠标悬停在查询计划的一个计划节点上方时,可以看到该节点的属性名称及其值的列表。

查询计划及一个节点的属性列表的屏幕截图。