使用 SQL Server 事件探查器的方案

使用 SQL Server Profiler的第一步是确定监视 SQL Server 实例的原因。本主题讨论使用 SQL Server Profiler收集跟踪信息的典型方案。

使用 SQL Server Profiler的典型方案包括:

  • 查找执行情况最差的查询。

    例如,可以创建一个捕获与 TSQLStored Procedure 事件类(RPC:CompletedSQL:BatchCompleted)相关的事件的跟踪。在此跟踪中包括所有数据列,按 Duration 分组并指定事件准则。例如,如果指定事件的 Duration 必须至少为 10000 微秒,则可以从跟踪中清除持续时间较短的事件。可以根据需要增大 Duration 的最小值。如果希望一次仅监视一个数据库,请指定 DatabaseID 事件标准的值。

  • 确定死锁的原因。

    例如,可以创建一个捕获与 TSQLStored Procedure 事件类(RPC:StartingSQL:BatchStarting)和 Locks 事件类(Deadlock graphLock:DeadlockLock:DeadlockChain)相关的事件的跟踪。在此跟踪中包括所有数据列并按 EventClass 分组。如果希望一次仅监视一个数据库,请指定 DatabaseID 事件标准的值。如果指定 Deadlock graph 事件类,SQL Server Profiler将生成图形化表示形式的死锁。有关详细信息,请参阅使用 SQL Server Profiler 分析死锁

    若要查看死锁中涉及的连接,请执行下列操作之一:

    • 打开包含捕获的数据的跟踪,按 ClientProcessID 对数据进行分组并展开死锁中涉及的两个连接。

    • 将捕获的数据保存到跟踪文件中,然后两次打开此跟踪文件,使其出现在两个单独的 SQL Server Profiler窗口中。按 ClientProcessID 对捕获的数据进行分组,然后展开死锁中涉及的客户端进程 ID;每个死锁的连接将出现在一个单独的窗口中。平铺这两个窗口以查看导致死锁的事件。如果要将特定死锁图形数据保存到文件,请右键单击死锁事件并选择“提取事件数据”。

  • 监视存储过程性能。

    例如,可以创建一个捕获与 Stored Procedure 事件类(SP:CompletedSP:StartingSP:StmtCompletedSP:StmtStarting)和 TSQL 事件类(SQL:BatchStartingSQL:BatchCompleted)相关的事件的跟踪。在此跟踪中包括所有必要的数据列并按 ClientProcessID 分组。如果希望一次只监视一个数据库,请使用数据库 ID 筛选器为“数据库 ID”事件标准指定一个值。同样,如果希望一次只监视一个存储过程,请使用对象 ID 筛选器为“对象 ID”事件标准指定一个值。

  • 审核 SQL Server 活动。

    例如,如果安全管理员经常需要了解登录到服务器的用户,则 SQL Server Profiler跟踪可以提供登录到服务器或从服务器注销的用户的完整记录。而且,此信息可用于法律或技术目的。

    创建跟踪,并选择 Audit Login 事件。若要返回适当的信息,请指定下列数据列:EventClass(默认选择)、EventSubClassLoginSIDLoginName

  • 监视每个用户的 Transact-SQL 活动。

    可以创建一个捕获与 SessionsExistingConnectionTSQL 事件类相关的事件的跟踪。在此跟踪中包括所有数据列,不指定任何事件准则并按 DBUserName 对捕获的事件进行分组。

  • 收集用于压力测试的事件典型示例。

    SQL Server Profiler提供一个预定义的 TSQL_Replay 模板,此模板可用于迭代优化,例如基准测试。

  • 收集通过数据库引擎优化顾问优化物理数据库设计的事件示例。

    SQL Server Profiler提供一个预定义的优化模板,此模板收集跟踪输出中的相应 Transact-SQL 事件以用作数据库引擎优化顾问中的工作负荷。