防止SQL SERVER的事件探查器跟踪软件的SQL脚本
如何防止SQL SERVER的事件探查器跟踪软件的SQL脚本,保障自己的软件不被他人分析?以下是一个停止所有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;