这个问题好像在Delphi园地上有:但没有试过,现在我把它贴上来:<br>如何防止SQL SERVER的事件探查器跟踪软件的SQL脚本,保障自己的软件不被他人分析?以下是一个停止所有SQLSERVER的跟踪器的脚本(两种方法的原理相同):<br>第一种方法:<br>procedure SQLCloseAllTrack;<br>const<br> sql = 'declare @TID integer ' +<br> 'declare Trac Cursor For ' +<br> 'SELECT Distinct Traceid FROM :: fn_trace_getinfo(default) ' +<br><br> 'open Trac ' +<br><br> 'Fetch Next From Trac into @TID ' +<br><br> 'while @@fetch_status=0 ' +<br> 'begin ' +<br> ' exec sp_trace_setstatus @TID,0 ' +<br> ' exec sp_trace_setstatus @TID,2 ' +<br><br> ' Fetch Next From Trac into @TID ' +<br> 'end ' +<br><br> 'Close Trac ' +<br> 'deallocate Trac';<br>begin<br> //停止所有SQLSERVER的跟踪器,以防止程序被別人跟踪<br> ExecSql(sql);<br>end; <br>第二种方法:<br>with faq1 do<br> begin<br> Close;<br> sql.Clear;<br> sql.add('declare @t_count int');<br> sql.add('set @t_count=1');<br> sql.add('while exists(SELECT * FROM ::::fn_trace_geteventinfo(@t_count))');<br> sql.add('begin');<br> sql.add('exec sp_trace_setstatus @t_count,0');<br> sql.add('set @t_count=@t_count+1');<br> sql.add('end');<br> try<br> execSQL;<br> except;<br> end;<br> close;sql.Clear;<br> end;<br>end;