您好,欢迎访问一九零五行业门户网

擦亮自己的眼睛去看SQLServer之说说跟踪

/*+--------------------------------------------------------------------------------------------------------------------------------------- * 名称: [dbo].[performance_trace_stopall] * 功能: 防止反跟踪 * 作者: junling * 创建时间: 2011-02-09
/*+---------------------------------------------------------------------------------------------------------------------------------------
*    名称:        [dbo].[performance_trace_stopall]
*    功能:        防止反跟踪
*    作者:        junling
*    创建时间:    2011-02-09
*    项目名称:    xxxx
* -----------------------------------------------------------------------------------------------------------------------------------------
*    历史记录
*    编号    日期        作者    备注
*    1.0    2011-02-09    junling    创建
------------------------------------------------------------------------------------------------------------------------------------------+*/
create  proc [dbo].[performance_trace_stopall]
as
    declare tracecursor cursor for select id from sys.traces where id 1
    open tracecursor
    declare @curid int
    fetch next from tracecursor into @curid
    while(@@fetch_status=0)
      begin         
          exec  sp_trace_setstatus @curid,0
exec  sp_trace_setstatus @curid,2
          fetch next from tracecursor into @curid
      end
    close tracecursor
    deallocate tracecursor具体什么时候调用,就是看你具体的情况了。
五、sql trace跟踪原则
        这里主要列出我们在跟踪时应该注意的事项,或者说按照下面的原则会降低跟踪对生产环境的影响。
1、不要使用profiler gui跟踪,如果使用了尽量不要运行在跟踪的sqlserver所在服务器;
2、不要把跟踪数据直接写入表,我们可以采用系统不是很繁忙时才把跟踪信息导入表中(除非你想立刻分析数据);
3、跟踪会有大量的i/o操作,尽量把跟踪文件单独放在物理磁盘中;
4、只选择自己感兴趣的事件,多选一个事件都会带来开销(除非你多选的事件不发生,那样也就没有选择的必要;
5、过滤你的跟踪信息,比如你只对某数据库感兴趣,你只对某些列感兴趣(注意这里仅仅是减少了架构图中的i/o提供者的开销,想想为什么);
6、像xxxxxxstarting之类的事件往往没有太大意义;
7、要注意你跟踪的sql中是否使用了标量函数,对这些sql的跟踪会严重影响性能,每个标量函数每处理一行都会触发事件(如果表很大,这是件很恐怖的事件);
8、只给需要跟踪的用户指定跟踪权限。
其它类似信息

推荐信息