SQL Server Profiler

适用于:SQL ServerAzure SQL 托管实例

SQL Server Profiler 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果。 事件保存在跟踪文件中,稍后可以在诊断问题时分析或用于重播特定一系列步骤。

尝试从 SQL Server Profiler 连接到 Azure SQL 数据库时,会错误地引发误导性错误消息,如下所示:

To run a trace against SQL Server, you must be a sysadmin fixed server role member or have the ALTER TRACE permission.

该消息应指出 SQL Server Profiler 不支持 Azure SQL 数据库。

弃用通知

重要

已弃用 SQL 跟踪和 SQL Server Profiler。 请改用 扩展事件 。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

Microsoft.SqlServer.Management.Trace中包含 SQL Server 跟踪和重播对象的命名空间也已弃用。 但是,支持 Analysis Services 工作负载。

有关 扩展事件的详细信息,请参阅以下文章:

探查器在哪里?

可以在 运行 SQL Server Profiler 中启动探查器

捕获和重播跟踪数据

下表显示了 SQL Server 中可用于捕获和重播跟踪数据的功能。

功能/目标工作负荷 关系引擎 Analysis Services
跟踪捕获 SQL Server Management Studio 中的扩展事件概述图形用户界面 SQL Server Profiler
轨迹回放 SQL Server Distributed Replay 概述 SQL Server Profiler

使用 SQL Server Profiler

Microsoft SQL Server Profiler 是 SQL 跟踪的图形用户界面,用于监视 数据库引擎 或 Analysis Services 的实例。 您可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。 例如,可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢影响了性能。 将 SQL Server Profiler 用于活动,例如:

  • 逐步分析有问题的查询以找到问题的原因。

  • 查找并诊断运行慢的查询。

  • 捕获导致问题的一系列 Transact-SQL 语句。 保存的跟踪可在测试服务器上复现问题,由此可以对该问题进行诊断。

  • 监视 SQL Server 的性能以优化工作负荷。 有关为数据库工作负荷而优化物理数据库设计的信息,请参阅 Database Engine Tuning Advisor

  • 关联性能计数器以诊断问题。

SQL Server Profiler 还支持对 SQL Server 实例上执行的操作进行审核。 审计会记录与安全相关的行为,以供安全管理员后续审查。

SQL Server Profiler 概念

若要使用 SQL Server Profiler,您需要了解描述该工具工作方式的术语。

使用 SQL Server Profiler 时,了解 SQL 跟踪很有帮助。 有关详细信息,请参阅 SQL Trace

事件

事件是在 SQL Server 数据库引擎实例中生成的操作。 这些事件的示例包括:

  • 登录连接、失败和断开。
  • Transact-SQL SELECTINSERTUPDATEDELETE 语句。
  • 远程过程调用 (RPC) 批处理状态。
  • 存储过程的开始或结束。
  • 存储过程中的语句的开始或结束。
  • SQL 批处理的开始或结束。
  • 写入 SQL Server 错误日志中的错误。
  • 在数据库对象上获取或释放的锁。
  • 打开的游标。
  • 安全权限检查。

这一跟踪在单行中显示事件生成的所有数据。 详细描述事件的数据列与此行相交。

EventClass

事件类是可以跟踪的事件类型。 事件类包含所有可由事件报告的数据。 以下列表显示了事件类的示例:

  • SQL:BatchCompleted
  • 审核登录
  • 审核退出
  • 锁定:已获取
  • 锁定:已释放

事件类别

事件类别定义 SQL Server Profiler 如何对事件进行分组。 例如, Locks 事件类别对所有锁事件类进行分组。 但是,事件类别仅存在于 SQL Server Profiler 中。 此术语不反映引擎事件的分组方式。

数据列

数据列是在跟踪中捕获的事件类的属性。 由于事件类决定了可收集的数据类型,因此并不是所有数据列都适用于所有事件类。 例如,在捕获 Lock: Acquired 事件类的跟踪中,BinaryData 数据列包含锁定的页 ID 或行的值,但 Integer Data 数据列不包含任何值,因为该数据列不适用于被捕获的事件类。

模板

模板定义跟踪的默认配置。 具体地说,它包括您要使用 SQL Server Profiler监视的事件类。 例如,可以创建一个指定事件、数据列和筛选器的模板。 无法直接执行模板。 而是将其保存为扩展名的文件 .tdf 。 保存后,模板就可以在启动基于此模板的跟踪时控制捕获的跟踪数据。

跟踪

跟踪基于选定的事件类、数据列和筛选器来捕获数据。 例如,可创建跟踪来监视异常错误。 选择 Exception 事件类以及 ErrorStateSeverity 数据列来执行此操作。 仅当从这三列收集数据时,跟踪结果才提供有意义的数据。 可以按此类方式运行配置的跟踪,并在服务器中的任何 异常 事件上收集数据。 保存跟踪数据,或立即使用它进行分析。 您可以稍后重播跟踪,但某些事件(例如 异常 事件)永远不会被重播。 还可以将跟踪保存为模板,以便生成类似的跟踪。

SQL Server 提供了以下两种用于跟踪 SQL Server 实例的方法:使用 SQL Server Profiler 进行跟踪,或使用系统存储过程进行跟踪。

筛选器

创建跟踪或模板时,可以定义条件来筛选事件收集的数据。 若要防止跟踪变得过于庞大,请对其进行筛选,以便只收集事件数据的子集。 例如,在跟踪中将 Microsoft Windows 用户名限制为特定用户可减少输出数据。

如果未设置筛选器,跟踪输出将返回所选事件类的所有事件。

SQL Server Profiler 任务

任务说明 文章
列出 SQL Server 提供的用于监视特定事件的预定义模板,以及使用重播跟踪所需的权限。 SQL Server Profiler 模板和权限
介绍了如何运行 SQL Server Profiler。 运行 SQL Server Profiler 所需的权限
介绍如何创建跟踪。 创建跟踪日志(SQL Server Profiler)
说明如何指定跟踪文件的事件和数据列。 指定跟踪文件的事件和数据列(SQL Server Profiler)
说明如何将跟踪结果保存到文件。 将跟踪结果保存到文件(SQL Server Profiler)
说明如何将跟踪结果保存到表。 将跟踪结果保存到表(SQL Server Profiler)
说明如何筛选跟踪中的事件。 筛选跟踪中的事件 (SQL Server Profiler)
说明如何查看筛选信息。 查看筛选器信息 (SQL Server Profiler)
介绍如何修改筛选器。 修改筛选器 (SQL Server Profiler)
介绍如何为跟踪文件(SQL Server Profiler)设置最大文件大小。 为跟踪文件(SQL Server Profiler)设置最大文件大小
说明如何设置跟踪表的最大表大小。 为跟踪表设置最大表大小(SQL Server Profiler)
说明如何启动跟踪。 启动跟踪(SQL Server Profiler)
说明如何在连接到服务器后自动启动跟踪。 连接到服务器后自动启动跟踪(SQL Server Profiler)
说明如何基于事件开始时间筛选事件。 根据事件开始时间筛选事件 (SQL Server Profiler)
说明如何基于事件结束时间筛选事件。 根据事件结束时间筛选事件 (SQL Server Profiler)
介绍如何筛选跟踪中的会话 ID。 在跟踪中筛选会话ID(SQL Server Profiler)
介绍如何暂停跟踪。 暂停跟踪 (SQL Server Profiler)
介绍如何停止跟踪。 停止跟踪 (SQL Server Profiler)
在跟踪暂停或停止后,说明如何继续运行跟踪。 在暂停或停止后运行跟踪(SQL Server Profiler)
说明如何清除跟踪窗口。 清除跟踪窗口 (SQL Server Profiler)
说明如何关闭跟踪窗口。 关闭跟踪窗口 (SQL Server Profiler)
说明如何设置跟踪定义默认值。 设置跟踪定义默认值 (SQL Server Profiler)
说明如何设置跟踪显示默认值。 设置跟踪显示默认值 (SQL Server Profiler)
说明如何打开跟踪文件。 打开跟踪文件 (SQL Server Profiler)
说明如何打开跟踪表。 打开跟踪表(SQL Server Profiler)
说明如何重播跟踪表。 重播跟踪表 (SQL Server Profiler)
说明如何重播跟踪文件。 重播跟踪文件 (SQL Server Profiler)
说明如何每次重播一个事件。 一次重播单个事件(SQL Server Profiler)
说明如何回放至断点。 重播到断点 (SQL Server Profiler)
介绍如何使用光标进行重播。 重现到游标(SQL Server Profiler)
说明如何重播 Transact-SQL 脚本。 重播 Transact-SQL 脚本(SQL Server Profiler)
说明如何创建跟踪模板。 创建跟踪模板 (SQL Server Profiler)
说明如何修改跟踪模板。 修改跟踪模板
说明如何设置全局跟踪选项。 设置全局跟踪选项 (SQL Server Profiler)
说明如何在跟踪时查找值或数据列。 在跟踪过程中查找值或数据列(SQL Server Profiler)
说明如何从正在运行的跟踪中生成模板。 从正在运行的跟踪派生模板 (SQL Server Profiler)
说明如何从跟踪文件或跟踪表派生模板。 从跟踪文件或跟踪表派生模板(SQL Server Profiler)
说明如何创建 Transact-SQL 脚本以便运行跟踪功能。 创建用于运行跟踪的 Transact-SQL 脚本(SQL Server Profiler)
说明如何导出跟踪模板。 导出跟踪模板 (SQL Server Profiler)
说明如何导入跟踪模板。 导入跟踪模板 (SQL Server Profiler)
说明如何从跟踪提取脚本。 从跟踪中提取脚本 (SQL Server Profiler)
说明如何将跟踪与 Windows 性能日志数据关联。 将跟踪与 Windows 性能日志数据相关联
说明如何组织跟踪中显示的列。 组织跟踪中显示的列(SQL Server Profiler)
介绍了如何启动 SQL Server Profiler。 运行 SQL Server Profiler
说明如何保存跟踪和跟踪模板。 保存跟踪和跟踪模板
说明如何修改跟踪模板。 修改跟踪模板
说明如何将跟踪与 Windows 性能日志数据关联。 将跟踪与 Windows 性能日志数据相关联
介绍了如何使用 SQL Server Profiler 查看和分析跟踪。 使用 SQL Server Profiler 查看和分析跟踪
介绍了如何使用 SQL Server Profiler 分析死锁。 使用 SQL Server Profiler 分析死锁
说明如何在 SQL Server Profiler 中使用 SHOWPLAN 结果来分析查询。 在 SQL Server Profiler 中使用 SHOWPLAN 结果分析查询
介绍了如何使用 SQL Server Profiler 筛选跟踪。 使用 SQL Server Profiler 对跟踪进行筛选
说明如何使用 SQL Server Profiler 的重播功能。 重播跟踪记录
列出了 SQL Server Profiler 的上下文相关帮助文章。 SQL Server Profiler 的 F1 帮助
列出由 SQL Server Profiler 用于监视性能和活动的系统存储过程。 SQL Server Profiler 存储过程

扩展事件和 SQL Server Profiler

扩展事件概述 和 SQL Server Profiler 是用于监视和排查 SQL Server 性能问题的工具。 SQL Server Profiler 已弃用,应仅与 Analysis Services 一起使用。 扩展事件是 SQL Server Profiler 的替代项,它提供了其他位置不可用的高级故障排除功能。 这里指出了主要区别以帮助从 SQL Server Profiler 迁移到扩展事件。

扩展事件工具

扩展事件概述 是 SQL Server 中内置的轻型、高度可缩放且灵活的事件处理系统。

扩展事件会话通常比 SQL 跟踪和 SQL Server Profiler 消耗更少的资源,因此更适合生产环境。 扩展事件支持捕获新式版本 SQL 中可用的事件。

相比之下,SQL 跟踪/SQL Server Profiler 中可用的事件仅限于 SQL Server 2008 R2 及更早版本中可用的功能。 扩展事件提供卓越的筛选功能、较小的默认有效负载,以及 Profiler 中未提供的功能,例如内存目标、聚合目标和多目标支持。

有关扩展事件的详细信息,请参阅 扩展事件概述

SQL Server Profiler 工具

SQL Server Profiler 是一个图形用户界面,它使用 SQL Trace 来捕获 SQL Server 或 Analysis Services 实例的活动。

如果配置不当,SQL Server Profiler 可能会占用大量资源,这会影响服务器性能,尤其是在生产服务器上使用时。 它具有内置模板来支持快速追踪。

总之,尽管 SQL Server Profiler 是一种较旧的工具,但可能会对许多用户很熟悉,但扩展事件是一种新式替代方法,可提供更好的性能、更详细的事件信息,以及用于排查和监视其他位置不可用的 SQL Server 实例的功能。 由于其相对于 Profiler 的优势,扩展事件被推荐用于新的跟踪和监视工作。