1.简介
SQL Server Profiler 用于创建和管理跟踪,并分析和重播跟踪结果。
对 sql server profiler 的使用取决于用户的使用目的(监视sql server数据库引擎实例)。例如:如果你处于生产周期的开发阶段,则你会更关心如何尽可能地获取所有的性能详细信息。而不会过于关心跟踪多个事件会造成多大的开销。相反,如果您正在监视生产服务器,则会希望跟踪更加集中,并尽可能占用较少的时间,以便尽可能地减轻服务器的跟踪负载。
2.功能或作用
监视SQL Server数据库引擎、分析服务器或Integration Services 的实例(在它们发生的)的性能。
调试Transact-SQL 语句和存储过程
通过重播跟踪来执行负载测试和质量保证
重播一个或多个用户的跟踪。
通过保存显示计划的结果来执行查询分析。
在项目开发阶段,通过音频执行语句来测试Transact-SQL语句和存储过程,以确保代码按预期方式运行。
通过捕获生产系统中的事件并在测试系统中重播这些事件来解决SQL Server中的问题,这对测试和调试很有用,并使得用户可以不受干扰地继续使用生产系统。
审核和检查在SQL Server实例中发生的活动,这使得安全管理员可以检查任何审核事件,包括登录尝试的成功与失败,以及访问语句和对象的权限的成功与失败。
将跟踪结果保存在XML中,以提供一个标准化的层次结构来跟踪结棍。这样,您可以修改现有跟踪或手动创建跟踪,然后对其进行重播。
聚合跟踪结果以允许对相似事件类进行分组和分析,这些结果基于单个列分组提供计数。
允许非管理员用户创建跟踪。
将性能计数器与跟踪关联以诊断性能问题。
配置可用于以后跟踪的跟踪模板。
3.使用sql server profiler
sql server profiler可显示 sql server如何在内部解析查询。这就使管理员能够准确查看提交服务器的Transact-SQL语句或多维表达式,以及服务器是如何访问数据库或多维数据集以返回结果集的。
使用sql server profile可执行下列操作:
创建基于可重用模板的跟踪
当跟踪运行时监视跟踪结果
将跟踪结果存储在表中
根据需要启动、停止、暂停和修改跟踪结果
重播跟踪结果
使用sql server profiler只监视感兴趣的事件。如果跟踪变得太大,可以基于所需的信息进行筛选,以便只收集部分事件数据。监视过多事件会增加服务器和监视进行的开销,并且可能导致跟踪文件或跟踪表变得很大,尤其是当监视进程待续很长时间时。
3.1 sql server profiler 模板
使用sql server profiler创建模板,在定义跟踪中包含事件类和数据列。可以将一个模板用于多个跟踪;注意:模板本身并不会执行。
sql server profiler提供了预定义的跟踪模板,使您可以轻松配置特定跟踪。例如:standard模板可以帮助你创建通用跟踪,用于记录登录、注销、已完成的处理和连接信息。
sql server profiler可以跟踪各种服务器类型。例如:sql server 2000,analysis services和sql server 2005(2008和更高版本)。但每种服务器可以包含的事件类会有所不同。因此,sql server profiler为不同服务器保留不同的模板,并提供与所选服务器类型匹配特定模板。
模板名称 | 模板用途 | 事件类 |
---|---|---|
SP_Counts | 捕获一段时间内存储过程的执行行为。 | SP:Starting |
Standard | 创建跟踪的通用起点。捕获所运行的全部存储过程和 Transact-SQL 批处理。用于监视常规数据库服务器活动。 | Audit Login Audit Logout ExistingConnection RPC:Completed SQL:BatchCompleted SQL:BatchStarting |
TSQL | 捕获客户端提交给 SQL Server 的所有 Transact-SQL 语句及其发出时间。用于调试客户端应用程序。 | Audit Login Audit Logout ExistingConnection RPC:Starting SQL:BatchStarting |
TSQL_Duration | 捕获客户端提交给 SQL Server 的所有 Transact-SQL 语句及其执行时间(以毫秒位单位),并按持续时间对其进行分组。用于识别执行速度慢的查询。 | RPC:Completed SQL:BatchCompleted |
TSQL_Grouped | 捕获提交给 SQL Server 的所有 Transact-SQL 语句及其发出时间。信息按提交语句的用户或客户端分组。用于调查某客户端或用户发出的查询。 | Audit Login Audit Logout ExistingConnection RPC:Starting SQL:BatchStarting |
TSQL_Locks | 捕获客户端与异常锁事件一起提交到 SQL Server 的 Transact-SQL 语句。用于排除死锁、锁超时和锁升级事件的故障。 | Blocked Process Report SP:StmtCompleted SP:StmtStarting SQL:StmtCompleted SQL:StmtStarting Deadlock Graph(针对 SQL Server 2005 或 SQL Server 2008 实例使用。) Lock:Cancel Lock:Deadlock Lock:Deadlock Chain Lock:Escalation Lock:Timeout(针对 SQL Server 2000 实例使用。) Lock:Timeout (timeout>0)(针对 SQL Server 2005 或 SQL Server 2008 实例使用。) |
TSQL_Replay | 捕获重播跟踪所需的 Transact-SQL 语句的详细信息。用于执行迭代优化,例如基准测试。 | CursorClose CursorExecute CursorOpen CursorPrepare CursorUnprepare Audit Login Audit Logout Existing Connection RPC Output Parameter RPC:Completed RPC:Starting Exec Prepared SQL Prepare SQL SQL:BatchCompleted SQL:BatchStarting |
TSQL_SPs | 捕获有关执行的所有存储过程的详细信息。用于分析存储过程的组成步骤。如果您怀疑过程正在重新编译,请添加 SP:Recompile 事件。 | Audit Login Audit Logout ExistingConnection RPC:Starting SP:Completed SP:Starting SP:StmtStarting SQL:BatchStarting |
Tuning | 捕获有关存储过程和 Transact-SQL 批处理执行的信息。用于生成跟踪输出,数据库引擎优化顾问可以将该输出用作工作负荷来优化数据库。 | RPC:Completed SP:StmtCompleted SQL:BatchCompleted |