首页  >  文章  >  数据库  >  擦亮自己的眼睛去看SQLServer之说说跟踪

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

WBOY
WBOY原创
2016-06-07 15:27:401207浏览

/*+--------------------------------------------------------------------------------------------------------------------------------------- * 名称: [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、只给需要跟踪的用户指定跟踪权限。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn