防止SQLSERVER的事件探查器跟踪软件


两种方法的原理相同
第一种方法:
复制代码 代码如下:

procedure SQLCloseAllTrack;
const
sql = declare @TID integer +
declare Trac Cursor For +
SELECT Distinct Traceid FROM :: fn_trace_getinfo(default) +
open Trac +
Fetch Next From Trac into @TID +
while @@fetch_status=0 +
begin +
exec sp_trace_setstatus @TID,0 +
exec sp_trace_setstatus @TID,2 +
Fetch Next From Trac into @TID +
end +
Close Trac +
deallocate Trac;
begin
//停止所有SQLSERVER的跟踪器,以防止程序被別人跟踪
ExecSql(sql);
end;

第二种方法:
复制代码 代码如下:

with faq1 do
begin
Close;
sql.Clear;
sql.add(declare @t_count int);
sql.add(set @t_count=1);
sql.add(while exists(SELECT * FROM ::::fn_trace_geteventinfo(@t_count)));
sql.add(begin);
sql.add(exec sp_trace_setstatus @t_count,0);
sql.add(set @t_count=@t_count+1);
sql.add(end);
try
execSQL;
except;
end;
close;sql.Clear;
end;
end;