SQL Server Profiler
适用于: SQL Server Azure SQL 托管实例
SQL Server Profiler 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果。 这些事件保存在一个跟踪文件中,稍后诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤。
重要
- 已弃用 SQL 跟踪和 SQL Server Profiler。 包含 Microsoft SQL Server 跟踪和重播对象的 Microsoft.SqlServer.Management.Trace 命名空间也已遭弃用。 但是,不支持 Analysis Services 工作负载。
- 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
- 请改用扩展事件。 有关扩展事件的详细信息,请参阅快速入门:SQL Server 中的扩展事件和 SSMS XEvent 探查器。
注意
尝试从 SQL Server Profiler 连接到 Azure SQL 数据库时,会错误地引发误导性错误消息,如下所示:
- 若要对 SQL Server 运行跟踪,必须是 sysadmin 固定服务器角色成员或具有 ALTER TRACE 权限。
该消息应说明了 SQL Server Profiler 不支持 Azure SQL 数据库。
在哪里可以启动探查器?
可使用 SQL Server Management Studio 中的探查器或带探查器扩展件的 Azure Data Studio。
捕获和重播跟踪数据
下表显示我们在 SQL Server 中推荐使用的用于捕获和重播跟踪数据的功能。
功能\目标工作负荷 | 关系引擎 | Analysis Services |
---|---|---|
跟踪捕获 | SQL Server Management Studio 中的扩展事件 图形用户界面 | SQL Server Profiler |
跟踪重播 | 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
SELECT
、INSERT
、UPDATE
和DELETE
语句。 - 远程过程调用 (RPC) 批处理状态。
- 存储过程的开始或结束。
- 存储过程中的语句的开始或结束。
- SQL 批处理的开始或结束。
- 写入到 SQL Server 错误日志的错误。
- 在数据库对象上获取或释放的锁。
- 打开的游标。
- 安全权限检查。
跟踪在一行中显示事件生成的所有数据。 该行与详细说明事件的数据列相交。
EventClass
事件类是可跟踪的事件类型。 事件类包含所有可由事件报告的数据。 下面是事件类的示例:
- SQL:BatchCompleted
- 审核登录
- 审核注销
- Lock: Acquired
- Lock: Released
EventCategory
事件类别定义 SQL Server Profiler中的事件的分组方法。 例如,所有锁定事件类都分组在 Locks 事件类别中。 但是,事件类别仅存在于 SQL Server Profiler中。 该术语不反映引擎事件的分组方法。
DataColumn
数据列是在跟踪中捕获的事件类的属性。 由于事件类决定了可收集的数据类型,因此并不是所有数据列都适用于所有事件类。 例如,在捕获 Lock: Acquired 事件类的跟踪中,BinaryData 数据列包含锁定的页 ID 或行的值,但 Integer Data 数据列不包含任何值,因为该数据列不适用于被捕获的事件类。
模板
模板定义跟踪的默认配置。 具体地说,它包括您要使用 SQL Server Profiler监视的事件类。 例如,可以创建一个指定事件、数据列和筛选器的模板。 模板不会被执行,而是保存为扩展名为 .tdf 的文件。 保存后,模板就可以在启动基于此模板的跟踪时控制捕获的跟踪数据。
跟踪
跟踪基于选定的事件、数据列和筛选器捕获数据。 例如,可创建跟踪来监视异常错误。 选择 Exception 事件类以及 Error、State 和 Severity 数据列来执行此操作。 必须收集这三列的数据,以使跟踪结果可提供有意义的数据。 然后,可运行以此方式配置的跟踪,并可收集有关服务器中的任何 Exception 事件的数据。 可以保存跟踪数据,也可以立刻将其用于分析。 尽管某些事件(如 Exception 事件)永远不会被重播,但跟踪以后可以被重播。 还可以将跟踪保存为模板,以便生成类似的跟踪。
SQL Server 提供了以下两种用于跟踪 SQL Server 实例的方法:使用 SQL Server Profiler 进行跟踪,或使用系统存储过程进行跟踪。
筛选器
当创建跟踪或模板时,可以定义筛选由事件收集的数据的准则。 若要避免跟踪过大,可以筛选跟踪,以便只收集一部分事件数据。 例如,在跟踪中将 Microsoft Windows 用户名限制为特定用户可减少输出数据。
如果没有设置筛选器,则跟踪输出将返回所选事件类的所有事件。
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 的优势,扩展事件被推荐用于新的跟踪和监视工作。