● 启动SQL Profiler
● 开始、暂停和停止跟踪
● 重放跟踪
● Showplan事件
SQL Profiler是SQL Trace的一种图形化用户界面工具,SQL Trace工具允许您监视SQL Server Database Engine或Analysis Services实例。使用SQL Profiler,您可以交互式地捕获数据库活动,并可以选择将有关数据库事件的数据保存到一个文件或表中。以后可以重放和分析这些保存的数据。SQL Server 2000 Profiler只限于跟踪关系数据库调用。使用SQL Server 2005 Profiler,您可以使用XML格式保存跟踪文件,也可以使用标准的ANSI、Unicode和OEM格式保存。跟踪的ShowPlan结果也可以保存为XML文件,然后载入到SQL Server Management Studio中,以便于分析。
使用SQL Profiler可以监视要观察的事件。在确定了要监视SQL Server实例活动的原因之后,您可以筛选事件,只收集事件数据的相关子集。以下列出了使用SQL Profiler的一些典型原因:
● 监视Database Engine或Analysis Server实例的性能。
● 分析和简化缓慢执行查询的性能。
● 通过保存Showplan结果执行查询分析。
● 确定死锁的原因
● 调试TSQL语句和存储过程。
● 通过重放跟踪执行强调和基准测试。
● 重放一个或多个用户的跟踪。
● 审查和回顾SQL Server实例上发生的活动。
● 聚集跟踪结果,从而组合并分析类似的事件类。
A.1 启动SQL Profiler
与先前的Profiler版本不同,您需要成为System Administrator才可以运行那些Profiler,而SQL Server 2005 Profiler使用的用户权限和用于创建跟踪的Transact-SQL存储过程的用户权限相同。为了运行SQL Profiler,用户需要具备ALTER TRACE权限。
启动SQL Profiler的方法有多种。一种是从Start | All Programs | Microsoft SQL Server 2005 | Performance Tools | SQL Server Profiler菜单选项中启动。另一种是从SQL Server Management Studio菜单中选择Tools | SQL Server Profiler选项来启动。您也可以从Database Engine Tuning Advisor的Tools | SQL Server Profiler菜单选项中启动SQL Profiler。
在启动SQL Profiler之后要做的第一件事是从主菜单中选择File | New Trace。这样将显示一个Connect To Server对话框,在该对话框中可以指定要连接的SQL Server实例。在该连接对话框的Server Type下拉列表中,您可以选择连接到Database Engine服务器或Analysis Services服务器。一旦选择了服务器类型并完成了到SQL Server实例的连接之后,将显示如图A-1所示的Trace属性对话框。
如图A-1中所示,跟踪属性对话框有两个选项卡:General和Events Selection。General选项卡中的选项可以执行以下操作:
● 在Trace name文本框中命名跟踪。
● 选择要使用的模板。该下拉列表中包含预定义模板和为当前跟踪提供者类型创建的所有用户自定义模板。表A-1中显示了这些预定义模板。
● 将跟踪保存到一个文件。将捕获的跟踪数据保存到一个.trc文件。
● 将跟踪保存到一个表。捕获跟踪数据并将它保存到数据库的表中。
● 启用跟踪停止时间。可以设置跟踪停止和关闭的日期和时间。
模 板 名 称 | 模板的作用和事件类 |
Standard(默认) | 捕获正在运行的存储过程和TSQL批处理。 用途:监视普通的数据库服务器活动。 类:Audit Login、Audit Logout、ExistingConnection、RPC:Completed、SQL:BatchCompleted、SQL:BatchStarting |
SP_Counts | 根据时间捕获存储过程的执行行为。 类:SP:Starting |
TSQL | 捕获客户机提交给SQL Server的TSQL语句和使用的时间。 用途:调试客户机应用程序。 类:Audit Login、Audit Logout、ExistingConnection、RPC:Starting、 SQL:BatchStarting |
TSQL_Duration | 捕获客户机提交给SQL Server的TSQL语句和执行时间(以毫秒为单位)。根据周期进行分组。 用途:确定慢查询。 类:RPC:Completed、SQL:BatchCompleted |
模 板 名 称 | 模板的作用和事件类 |
TSQL_Grouped | 捕获客户机提交给SQL Server的TSQL语句和使用的时间,根据提交该语句的用户或客户机进行分组。 用途:从特定的客户机或用户中调查查询。 类:Audit Login、Audit Logout、ExistingConnection、RPC:Starting、 SQL:BatchStarting |
TSQL_Replay | 如果要重放跟踪,则捕获所需的TSQL语句的信息。 用途:性能微调、基准测试。 类:CursorClose、CursorExecute、CursorOpen、CursorPrepare、 CursorUnprepare、Audit Login、Audit Logout、ExistingConnection、 RPC Output Parameter、RPC:Completed、RPC:Starting、Exec Prepared SQL、 Prepare SQL、SQL:BatchCompleted、SQL:BatchStarting |
TSQL_SPs | 捕获有关执行存储过程的信息。 用途:分析存储过程的组件步骤。 类:Audit Login、Audit Logout、ExistingConnection、RPC:Starting、 SP:Completed、SP:Starting、SP:StmtStaring、SQL:BatchStarting |
Tuning | 捕获有关存储过程和TSQL批处理执行的信息。 用途:产生Database Engine Tuning Advisor的跟踪输出,用于调整数据库。 类:RPC:Completed、SP:StmtCompleted、SQL:BatchCompleted |
在设置了跟踪属性之后,单击Run按钮开始跟踪。图A-3中显示了正在运行跟踪的SQL Profiler。如该图所示,在开始跟踪时,Profiler实用程序中将打开一个窗口。该窗口的顶端部分显示了要监视的EventClass、该事件的TextData,以及与跟踪属性中设置的跟踪模板相关的列。该示例中使用TSQL_SPs模板进行跟踪,因此窗口中显示的列有:DatabaseName、DatabaseID、ObjectID、ObjectName、ServerName、BinaryData、SPID和该事件的Start Time。窗口底部显示了该事件正执行的TSQL。单击该界面顶部列出的每一行将会在该界面的底部显示相应的语句。
在使用SQL Server Profiler定义跟踪之后,您可以通过使用用户界面菜单选项开始、暂停或停止捕获数据。这些选项分别位于File | Run Trace、File | Pause Trace和File | Stop Trace中。
在开始SQL Server Database Engine或Analysis Services跟踪时,会创建一个队列,并用于临时保存捕获的事件。使用SQL Profiler访问跟踪将会在界面中打开一个窗口,并立即捕获数据。在运行跟踪时用户只能修改跟踪的名称。
当暂停跟踪时,只有在重新开始跟踪时才会捕获数据。在重新开始跟踪时会从前面捕获的数据处开始继续进行数据捕获。在暂停时用户可以修改跟踪的名称、事件、列和筛选器,但跟踪的目标和服务器连接不能被修改。
当停止跟踪时,数据捕获也随之停止。在重新开始跟踪时前面捕获的数据会丢失,除非这些数据被保存到一个跟踪文件或跟踪表中。在停止跟踪之后,您可以将搜集的信息保存到一个表或文件中。在停止跟踪时将会保存跟踪属性,这时您可以修改跟踪的名称、事件、列和筛选器。
A.3 重放跟踪
SQL Profiler具备保存跟踪并在稍后重放跟踪的功能。这种重放功能允许您再生跟踪中所捕获的活动。SQL Profiler具有一个多线程重放引擎,它可以模仿用户连接和SQL Server Authentication。在解决应用程序或进程故障时,重放非常有效。在确认并修正某个问题时,您可以在正确的情况下运行跟踪,然后在有问题的情况下重放跟踪,并比较结果。
SQL Profiler Replay菜单选项允许使用Toggle Breakpoint选项和Run To Curose选项来进行跟踪调试。这些选项将重放跟踪分解为更短、更容易管理的片断,从而便于分析。
A.4 Showplan事件
SQL Profiler允许您在跟踪中搜集和显示查询计划信息。您可以向跟踪中添加Showplan事件类,甚至将这些Showplan事件保存到XML文件中。通过从Profiler主菜单中选择File | Export | Extract SQL Server Events | Extract Showplan Events,您可以提取跟踪中的Showplan事件。这样会显示一个Save File对话框,可以将提取的Showplan事件保存到一个.SQLPlan文件中,或者逐个保存到单独的.SQLPlan文件中。然后可以在SQL Server Management Studio中打开该文件进行分析。
您还可以在配置时设置跟踪属性来提取Showplan事件。单击Trace Properties对话框中的Events Selection选项卡并滚动到Performance事件,如图A-4所示。表A-2中列出了可以添加到跟踪中的Showplan事件。
Showplan事件 | 说 明 |
Performance Statistics | 显示何时从计划缓存中缓存、重编译和撤销一个已经编译的Showplan |
Showplan All | 显示查询计划和已执行TSQL语句的所有编辑详情 |
Showplan All for Query Compile | 显示SQL Server何时编译SQL语句。返回Showplan XML for Query Compile中可以使用的一组信息 |
Showplan Statistics Profile | 显示查询计划,包括执行SQL语句的运行时详情和操作的行数 |
Showplan Text | 以二进制的格式显示执行TSQL语句的查询计划 |
Showplan Text(Unencoded) | 以纯文本的格式显示执行TSQL语句的查询计划 |
Showplan XML | 显示最优化的查询计划,包括查询最优化过程中搜集的数据 |
Showplan事件 | 说 明 |
Showplan XML For Query Compile | 在编译时显示查询计划 |
Showplan XML Statistics Profile | 以XML格式显示查询计划,包括执行SQL语句的运行时详情和操作的行数 |
在运行跟踪时,您可以从跟踪窗口的顶部选择Showplan项,将查询计划图显示在该窗口的底部。图A-5显示了一个查询计划图。