1:SQL的事件探测器原理
2:我想做个select触发器,就是想知道什么时候对该表做了查询
并把该SQL语句保存到一个磁盘文件里面
3:比如前台做了一个操作,传到后台的SQL语句是
select * from guest where guest_id=89
用事件探测器跟踪出来的,我怎么把那条语句取出来,因为事件探测器跟踪的语句只能显示,我要的效果就是:
比如我用某个东西跟踪到了那条语句,我就把等号后面的89保存起来,
也就是执行跟踪到了那么一个对guest表的查询操作,就要让他触发一个事件。
怎么让一个表在被查询的时候触发一个事件?
或者能模仿SQL的事件探测器,把跟踪到的SQL语句进行分析,如果出现了那个对guest表的查询,在程序里面就做一个事件处理(把等号右边的”89“保存起来)。
急急急 急急急急急急急急
!!!!!!!!!!!!!!
2:我想做个select触发器,就是想知道什么时候对该表做了查询
并把该SQL语句保存到一个磁盘文件里面
3:比如前台做了一个操作,传到后台的SQL语句是
select * from guest where guest_id=89
用事件探测器跟踪出来的,我怎么把那条语句取出来,因为事件探测器跟踪的语句只能显示,我要的效果就是:
比如我用某个东西跟踪到了那条语句,我就把等号后面的89保存起来,
也就是执行跟踪到了那么一个对guest表的查询操作,就要让他触发一个事件。
怎么让一个表在被查询的时候触发一个事件?
或者能模仿SQL的事件探测器,把跟踪到的SQL语句进行分析,如果出现了那个对guest表的查询,在程序里面就做一个事件处理(把等号右边的”89“保存起来)。
急急急 急急急急急急急急
!!!!!!!!!!!!!!
DECLARE @em int;
DECLARE @TraceId int;
DECLARE @maxFileSize bigint;
DECLARE @fileName nvarchar(128);declare @on bit;--set trace values
set @maxFileSize =5;
SET @fileName=N'C:\ProfilerTrace';
set @on =1;--create trace
exec @em=sp_trace_create @TraceId output,
0,
@fileName,
@maxFileSize,
null;--error handling
if(@em !=0)
goto error--set the trace events and data columns to collect--collect rpc:completed event and selected data columns]exec sp_trace_setevent @traceid,10,13,@on;
exec sp_trace_setevent @traceid,10,34,@on;
exec sp_trace_setevent @traceid,10,1,@on;
exec sp_trace_setevent @traceid,10,18,@on;
exec sp_trace_setevent @traceid,10,16,@on;
exec sp_trace_setevent @traceid,10,17,@on;
exec sp_trace_setevent @traceid,10,25,@on;
exec sp_trace_setevent @traceid,10,35,@on;
exec sp_trace_setevent @traceid,10,10,@on;
exec sp_trace_setevent @traceid,10,14,@on;
exec sp_trace_setevent @traceid,10,15,@on;
exec sp_trace_setevent @traceid,10,12,@on;
exec sp_trace_setevent @traceid,10,11,@on;
exec sp_trace_setevent @traceid,10,51,@on;
exec sp_trace_setevent @traceid,10,2,@on;--collect sp:stmtcompleted event and select data columnsexec sp_trace_setevent @traceid,43,13,@on;
exec sp_trace_setevent @traceid,43,34,@on;
exec sp_trace_setevent @traceid,43,1,@on;
exec sp_trace_setevent @traceid,43,18,@on;
exec sp_trace_setevent @traceid,43,16,@on;
exec sp_trace_setevent @traceid,43,17,@on;
exec sp_trace_setevent @traceid,43,25,@on;
exec sp_trace_setevent @traceid,43,35,@on;
exec sp_trace_setevent @traceid,43,10,@on;
exec sp_trace_setevent @traceid,43,14,@on;
exec sp_trace_setevent @traceid,43,15,@on;
exec sp_trace_setevent @traceid,43,12,@on;
exec sp_trace_setevent @traceid,43,11,@on;
exec sp_trace_setevent @traceid,43,51,@on;
exec sp_trace_setevent @traceid,43,2,@on;--collect sql:batchstarting event and selected data columnsexec sp_trace_setevent @traceid,13,13,@on;
exec sp_trace_setevent @traceid,13,34,@on;
exec sp_trace_setevent @traceid,13,1,@on;
exec sp_trace_setevent @traceid,13,18,@on;
exec sp_trace_setevent @traceid,13,16,@on;
exec sp_trace_setevent @traceid,13,17,@on;
exec sp_trace_setevent @traceid,13,25,@on;
exec sp_trace_setevent @traceid,13,35,@on;
exec sp_trace_setevent @traceid,13,10,@on;
exec sp_trace_setevent @traceid,13,14,@on;
exec sp_trace_setevent @traceid,13,15,@on;
exec sp_trace_setevent @traceid,13,12,@on;
exec sp_trace_setevent @traceid,13,11,@on;
exec sp_trace_setevent @traceid,13,51,@on;
exec sp_trace_setevent @traceid,13,2,@on;--collect sql:batchcompleted event and select data columns
exec sp_trace_setevent @traceid,12,13,@on;
exec sp_trace_setevent @traceid,12,34,@on;
exec sp_trace_setevent @traceid,12,1,@on;
exec sp_trace_setevent @traceid,12,18,@on;
exec sp_trace_setevent @traceid,12,16,@on;
exec sp_trace_setevent @traceid,12,17,@on;
exec sp_trace_setevent @traceid,12,25,@on;
exec sp_trace_setevent @traceid,12,35,@on;
exec sp_trace_setevent @traceid,12,10,@on;
exec sp_trace_setevent @traceid,12,14,@on;
exec sp_trace_setevent @traceid,12,15,@on;
exec sp_trace_setevent @traceid,12,12,@on;
exec sp_trace_setevent @traceid,12,11,@on;
exec sp_trace_setevent @traceid,12,51,@on;
exec sp_trace_setevent @traceid,12,2,@on;
--collect showplan xml event and select data columnsexec sp_trace_setevent @traceid,122,13,@on;
exec sp_trace_setevent @traceid,122,34,@on;
exec sp_trace_setevent @traceid,122,1,@on;
exec sp_trace_setevent @traceid,122,18,@on;
exec sp_trace_setevent @traceid,122,16,@on;
exec sp_trace_setevent @traceid,122,17,@on;
exec sp_trace_setevent @traceid,122,25,@on;
exec sp_trace_setevent @traceid,122,35,@on;
exec sp_trace_setevent @traceid,122,10,@on;
exec sp_trace_setevent @traceid,122,14,@on;
exec sp_trace_setevent @traceid,122,15,@on;
exec sp_trace_setevent @traceid,122,12,@on;
exec sp_trace_setevent @traceid,122,11,@on;
exec sp_trace_setevent @traceid,122,51,@on;
exec sp_trace_setevent @traceid,122,2,@on;--set filtersexec sp_trace_setfilter @traceid,3,0,0,9--start the traceexec sp_trace_setstatus @traceid,1;--display trace id for later use
select traceid=@TraceId;
goto finish;--error trap
error:
select errorcode=@em;--exit
finish: ;
go---stop the traceexec sp_trace_setstatus 2,0;--close the traceexec sp_trace_setstatus 2,2;
select * from fn_trace_gettable('c:\ProfilerTrace.trc',default)
SQL Profile可以保存到表的保存到表后爱怎么处理怎么处理
http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/
但具体方法没讲
profiler 都带有这些功能,lz参考。
这个貌似是db2的吧。这边有本专门讲 sql profile的书,可以参考下。
http://www.sqlservercentral.com/articles/books/65797/
你发的那些语句我怎么用?
其实我的要求是:你前台每操作一次(不是产生一个SQL语句传入后台吗,假如传了查询,我就对该语句进行分析处理,知道吧,是操作一次,分析处理一次,跟踪到一条SQL语句,把该语句导入到表中,然后进行分析,看看这个语句是不是我想要的,如果不是继续跟踪,是这个意思,也就是跟踪到一条分析处理一条,不是批跟踪,批处理),你发的那些代码,这个类似SQL自带的事件探测器,不能实时的进行跟踪处理,我的要求是要实时的进行跟踪,分析,处理。这个能做到吗?
所以这个后台isapi能记录所有的sql
只要你不kill trace的进程,想跟踪多久就多久。。相当于实时的。