使用 SQL Server 事件探查器的方案
使用 SQL Server Profiler 的第一步是确定监视 SQL Server 实例的原因。本主题讨论使用 SQL Server Profiler 收集跟踪信息的典型方案。
使用 SQL Server Profiler 的典型方案包括:
- 查找执行情况最差的查询。
例如,可以创建一个捕获与 TSQL 和 Stored Procedure 事件类(RPC:Completed 和 SQL:BatchCompleted)相关的事件的跟踪。在此跟踪中包括所有数据列,按 Duration 分组并指定事件准则。例如,如果指定事件的 Duration 必须至少为 10000 微秒,则可以从跟踪中清除持续时间较短的事件。可以根据需要增大 Duration 的最小值。如果希望一次仅监视一个数据库,请指定 DatabaseID 事件标准的值。 - 确定死锁的原因。
例如,可以创建一个捕获与 TSQL 和 Stored Procedure 事件类(RPC:Starting 和 SQL:BatchStarting)和 Locks 事件类(Deadlock graph、Lock:Deadlock 或 Lock:DeadlockChain)相关的事件的跟踪。在此跟踪中包括所有数据列并按 EventClass 分组。如果希望一次仅监视一个数据库,请指定 DatabaseID 事件标准的值。如果指定 Deadlock graph 事件类,SQL Server Profiler 将生成图形化表示形式的死锁。有关详细信息,请参阅使用 SQL Server Profiler 分析死锁。
若要查看死锁中涉及的连接,请执行下列操作之一:- 打开包含捕获的数据的跟踪,按 ClientProcessID 对数据进行分组并展开死锁中涉及的两个连接。
- 将捕获的数据保存到跟踪文件中,然后两次打开此跟踪文件,使其出现在两个单独的 SQL Server Profiler 窗口中。按 ClientProcessID 对捕获的数据进行分组,然后展开死锁中涉及的客户端进程 ID;每个死锁的连接将出现在一个单独的窗口中。平铺这两个窗口以查看导致死锁的事件。如果要将特定死锁图形数据保存到文件,请右键单击死锁事件并选择“提取事件数据”。
- 监视存储过程性能。
例如,可以创建一个捕获与 Stored Procedure 事件类(SP:Completed、SP:Starting、SP:StmtCompleted 和 SP:StmtStarting)和 TSQL 事件类(SQL:BatchStarting 和 SQL:BatchCompleted)相关的事件的跟踪。在此跟踪中包括所有必要的数据列并按 ClientProcessID 分组。如果希望一次只监视一个数据库,请使用数据库 ID 筛选器为“数据库 ID”****事件标准指定一个值。同样,如果希望一次只监视一个存储过程,请使用对象 ID 筛选器为“对象 ID”事件标准指定一个值。 - 审核 SQL Server 活动。
例如,如果安全管理员经常需要了解登录到服务器的用户,则 SQL Server Profiler 跟踪可以提供登录到服务器或从服务器注销的用户的完整记录。而且,此信息可用于法律或技术目的。
创建跟踪,并选择 Audit Login 事件。若要返回适当的信息,请指定下列数据列:EventClass(默认选择)、EventSubClass、LoginSID 和 LoginName。 - 监视每个用户的 Transact-SQL 活动。
可以创建一个捕获与 Sessions、ExistingConnection 和 TSQL 事件类相关的事件的跟踪。在此跟踪中包括所有数据列,不指定任何事件准则并按 DBUserName 对捕获的事件进行分组。 - 收集用于压力测试的事件典型示例。
SQL Server Profiler 提供一个预定义的 TSQL_Replay 模板,此模板可用于迭代优化,例如基准测试。 - 收集通过数据库引擎 优化顾问优化物理数据库设计的事件示例。
SQL Server Profiler 提供一个预定义的优化模板,此模板收集跟踪输出中的相应 Transact-SQL 事件以用作数据库引擎 优化顾问中的工作负荷。