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 Management Studio,请使用 XEvent Profiler
- 对于 Visual Studio Code 的 MSSQL 扩展,请使用查询探查器(预览版)。
探查器在哪里?
可以在 运行 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
SELECT、INSERT、UPDATE和DELETE语句。 - 远程过程调用 (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 事件类以及 Error、State 和 Severity 数据列来执行此操作。 仅当从这三列收集数据时,跟踪结果才提供有意义的数据。 可以按此类方式运行配置的跟踪,并在服务器中的任何 异常 事件上收集数据。 保存跟踪数据,或立即使用它进行分析。 您可以稍后重播跟踪,但某些事件(例如 异常 事件)永远不会被重播。 还可以将跟踪保存为模板,以便生成类似的跟踪。
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 的优势,扩展事件被推荐用于新的跟踪和监视工作。