一、概念
1. SQL跟踪(SQL Trace)
SQL Server 的底层有一个事件子系统,称为SQL Trace。DBA可能通过这个事件子系统捕捉与SQL Server实例中可能发生的200多个事件有关的信息。
SQL Server Profiler是一个图形化工具,提供了SQL Trace子系统最常用的接口。SQL Server 提供 Transact-SQL 系统存储过程来创建对 SQL Server 数据库引擎实例的跟踪。 可以不使用 SQL Server Profiler,而使用这些系统存储过程从您自己的应用程序中手动创建跟踪。 这样,您就可以针对企业的特定需求编写自定义应用程序。
在 SQL 跟踪中,如果事件是在跟踪定义中列出的事件类的实例,则收集这些事件。 可以将这些事件从跟踪中筛选出来或为其目标进行排队。 目标可以是文件或 SQL Server 管理对象 (SMO),它可以使用管理 SQL Server 的应用程序中的跟踪信息。
2. SQL 跟踪结构
事件源可以是生成跟踪事件(例如 Transact-SQL 批处理)或 SQL Server 事件(例如死锁)的任何源。 有关事件的详细信息,请参阅 SQL Server 事件类参考。 事件发生后,如果该事件类已经包含在跟踪定义中,则跟踪将收集该事件信息。 如果已经在跟踪定义中为该事件类定义筛选器,则将应用这些筛选器并将跟踪事件信息传递到队列。 从队列中,跟踪信息或者被写入文件,或者由应用程序(例如 SQL Server Profiler)中的 SMO 使用。
二、使用SQL跟踪的方法
通过系统存储过程进行跟踪的过程如下: http://technet.microsoft.com/zh-cn/library/hh245121.aspx
(1)使用 sp_trace_create 创建跟踪。为存储过程 sp_trace_create 的 @tracefile 参数指定路径和文件名后,SQL Server 将跟踪结果保存到文件中。
(2)使用 sp_trace_setevent 添加事件。
(3)使用 sp_trace_setfilter 设置筛选器(可选)
(4)使用 sp_trace_setstatus 启动跟踪。
(5)使用 sp_trace_setstatus 停止跟踪。
(6)使用 sp_trace_setstatus 关闭跟踪。
本文结语:
SQL跟踪可以通过存储过程创建对数据库实例的跟踪。你可以针对特定的需求在自定义的应用程序中手动创建跟踪。