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

适用于:SQL ServerAzure 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 中的选项卡式窗格中显示,如下所示:

Screenshot of your target > View Target Data.

注意

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

查看实时数据

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

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

Screenshot of your session > Watch Live Data.

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

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

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

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

导出目标数据

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

Screenshot of exporting displayed data, Extended Events > Export to.

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

操作显示中的数据

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

数据显示中的上下文菜单

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

右键单击某个数据单元格

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

Screenshot showing right-click a cell, in the data display.

右键单击某个列标题

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

Screenshot showing right-click a column header, in the data display, or details grid.

选择列,合并列

可以使用“选择列”选项来控制将要显示和不会显示的数据列。 你可以在不同位置找到“选择列”菜单项:

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

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

Screenshot showing choose Columns dialog, also offers Merge columns options.

合并列

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

筛选器

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

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

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

Screenshot of time range, and column filters, on the Filters dialog.

分组和聚合

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

分组

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

Screenshot showing the toolbar with Grouping selected and the Grouping dialog box.

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

Screenshot of new display look after Grouping.

聚合

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

Screenshot showing the toolbar with Aggregation selected and the Aggregation dialog box.

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

Screenshot of the display showing that a COUNT value has been added.

查看运行时查询计划

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

Screenshot of Query Plan, with properties list for one node.