笔记331 SQLSERVER新建默认跟踪,使用系统存储过程的方法 2013-7-24

笔记331 SQLSERVER新建默认跟踪,使用系统存储过程的方法 2013-7-24

 1 --SQLSERVER新建默认跟踪,使用系统存储过程的方法 2013-7-24
 2 --1. 使用系统存储过程sp_trace_create建立一个Trace,这个SP可以在on-line help上找到
 3 
 4 DECLARE @TraceIdOut INT
 5 DECLARE    @On BIT
 6 DECLARE    @rc INT
 7 -- Define the trace
 8 EXEC @rc = sp_trace_create @TraceIdOut OUTPUT, 2, N'c:/sqlauditfile1'
 9   --最后一个参数是最终Trace结果存放的位置
10 PRINT @TraceIdOut
11   --打印Trace ID的目的是当需要停止该Trace时好知道该挺哪个
12 
13 --2. 使用系统存储过程sp_trace_setevent告知SQL所要监听的事件以及事件返回的信息,同样具体参数参看on-line help
14 
15 SET @On = 1
16 EXEC sp_trace_setevent @TraceIdOut, 13, 1, @On
17 --最后一个参数表明开始监听,这里很是奇特,该参数是bit型,但是直接传1不行,必须是一个bit型的变量。。。
18 
19 --这个例子监听的是SQL:BatchCompleted事件,返回的是SQL最终执行的语句(TextData)
20 
21 --如果想监听多个事件,或者需要返回多个信息,那么就多次执行该语句(不同的参数哦)
22 
23 --3. 使用系统存储过程sp_trace_setstatus让指定Trace开始运行
24 EXEC @rc = sp_trace_setstatus @TraceIdOut, @status = 1
25 
26 --4.开始执行一些SQL语句。
27 
28 
29 
30 --5.执行差不多了,再次使用系统存储过程sp_trace_setstatus来停止Trace,并且关闭和删除这个Trace。
31 
32 EXEC sp_trace_setstatus 1, 0
33   --停止Trace
34 EXEC sp_trace_setstatus 1, 2  --关闭和删除Trace
35 
36 --6.发现C盘下多了第一步建立的文件,用SQL Profilter打开看看吧。。。
37 
38 --注意:
39 --
40 --1.如果不执行第5步,那么第一步建立的文件是打不开的。
41 --
42 --2.SQL好像不能自行删除文件,也就是说如果文件存在,需要手工先行删除。
43 --
44 --3.第一步打印Trace ID的目的是为了最后一步用,因为不在一起执行。。。
45 --
46 --4.可以建立两个任务,第一个是一早执行,开始一个Trace;第二个是晚上执行,关闭Trace。那么客户一天的SQL语句执行情况都知道了

 

posted @ 2013-08-04 22:00 桦仔 阅读(...) 评论(...)  编辑 收藏