SQL Server中关于跟踪(Trace)那一点事(转载)

发布时间:2019-02-26  栏目:MySQL  评论:0 Comments

图片 1

更灵活的点子是选拔非业务高峰期,利用SQL
Server自带的邮件提示效能,直接检查和测试出标题,然后Send Email….

--设置跟踪状态以启动
exec sp_trace_setstatus @TraceID,1

图片 2

@maxfilesize 跟踪文件的大大小小,单位是MB,暗中认可不设置为5MB

 

比如说死锁查找,CPU消耗高,IO值高的那多少个语句….

 

大家得以利用如下语句,查找跟踪文件的消息

 

此措施能将数据库执行的具备SQL滚动记录下来,防止备SQL
Server宕机之后的事故查找。

将该脚本保存到三个岗位,然后大家打开,小编顺手将默许的文件路径添加上

@tracefile 跟踪文件的不二法门,这里能够是share的途径

Trace作为二个很好的数据库追踪工具,在SQL Server
2006中便集成到系统作用中去,并且暗中认可是敞开的,当然我们也得以手动的关闭它,它座落sp_config配置参数中,大家能够通过以下语句查看:

二.自定义跟踪音讯(Default Trace)

图片 3

select * from sys.traces
where id=2

@traceid 要修改的跟踪的 ID号

图片 4

--新建追踪的存储过程
use master
go
create proc StartBlackBoxTrace
as
begin
    --默认开启追踪所有的SQL 执行语句,文件文件路径为默认
    DECLARE @TraceID int
    DECLARE @MaxFileSize bigint
    SET @MaxFileSize=25
    EXEC SP_TRACE_CREATE
    @TraceID OUTPUT,
    8,
    NULL,
    @MaxFileSize
    EXEC SP_TRACE_SETSTATUS @TraceID,1
END

--将该存储过程设置为SQL Server服务启动时自动启动
EXEC sp_procoption
'StartBlackBoxTrace','STARTUP','ON'
GO
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 

下一场设置,暗中认可的SPID为大于等于50,小于50的为系统自有事件

--查看跟踪文件以表显示
select * from ::fn_trace_gettable('F:\SQLTest\.trc',1)

图片 5图片 6

在生产条件中,以上多少个分类都以比较常用的,对定点部分题材的原则性能够在找到足够的凭证可循,比如某厮将数据库数据删除掉了还不认账等,那之中的Login
Failed消息,能够追踪出有那么用户尝试登陆过数据库,并且失利,如若普遍的产出这种景观,那就要幸免黑客袭击了。

图片 7

理所当然假诺感到生成的文件5MB有点小,能够手动配置更改大小,恐怕自定义文件路径,那个都以同意自定义设置的。

DECLARE @TraceID INT
DECLARE @maxfilesize BIGINT
SET @maxfilesize=25
DECLARE @tracefile nvarchar(245)
SET @tracefile=N'F:\SQLTest\TRACE\MYTRACE.trc'
EXEC sp_trace_create
@TraceID OUTPUT,
@options=8,
@tracefile=NULL,
@maxfilesize=@maxfilesize
EXEC sp_trace_setstatus @TraceID,1

图片 8

例如死锁查找,CPU消耗高,IO值高的这些语句….

① 、那么些公文是滚动更新的,而且各类文件默许最大都为20MB,并且没有提供更改的接口,所以当文件填充完之后就会去除掉,所以会找不到太久以前的内容;

--开启Default Trace
sp_configure 'show advanced options' , 1 ;
GO
RECONFIGURE;
GO
sp_configure 'default trace enabled' , 1 ;
GO
RECONFIGURE;
GO

--测试是否开启
EXEC sp_configure 'default trace enabled';
GO

--关闭Default Trace
sp_configure 'default trace enabled' , 0 ;
GO
RECONFIGURE;
GO
sp_configure 'show advanced options' , 0 ;
GO
RECONFIGURE;
GO

以上命令归来的结果值,种种值(property)代表的意思如下:

第⑤个:当前跟踪的景观:0 甘休;1 运转

图片 9

@filecount 暗许生产的跟踪文件的数额,比如暗中同意的为几个,那就在第6个公文写完的时候实行覆盖第3个文件滚动

上述的跟踪事件中,基本包涵了SQL
Server中所能做的其他操作,大家能够依据本人索要进行定义,当大家得以本着日常经常境遇的有的标题开始展览一定,比如:死锁、等待、登录战败等等吧…当然也能够追踪某些人的装有行为,这里大家来定义多少个来看看

sp_trace_setevent [ @traceid = ] trace_id  
          , [ @eventid = ] event_id 
          , [ @columnid = ] column_id 
          , [ @on = ] on

图片 10

@maxfilesize 跟踪文件的轻重,单位是MB,暗中同意不安装为5MB

笔者们透过以下命令来查看跟踪文件中的内容:

前言

系统暗中认可提供多少个跟踪文件,并且每二个文件默许大小都以20MB,SQL
Server会本人维护这五个公文,当实例重启的时候依旧到达最大值的时候,之后会重复生成新的公文,将最早的跟踪文件删除,依次滚动更新。

贰 、本人暗中认可的跟踪,只是提供一些根本消息的寻踪,当中包含:auditing
events,database events,error events,full text events,object
creation,object deletion,object
alteration,想要找到其它更详尽的剧情,此措施恐怕无能为力;

SQL
Server本人自带的Profile工具就提供编辑脚本的功力,我们将地方的规划,导出成Trace脚本,大家点击“文件”,导出该安排脚本

--设置跟踪状态以停止
exec sp_trace_setstatus @TraceID,0

黑匣子作为飞机出现事故后的追踪利器,在微软的SQL
Server那几个数据库中私下认可也给装上了此引擎,不过从未开启,此效用只怕帮忙大家诊断间歇性的服务器崩溃。它比我们地点介绍的默许开启的跟踪盯梢的新闻更全,跟踪更大片段。其剧情涵盖了:“SP:运营”、“SQL:批处理运营”、极度和理会等事件

图片 11

③ 、在SQL Server贰零壹叁后续版本的 Microsoft SQL Server
将去除该意义,改用扩充事件。

 

以此图像化的工具就相比较熟悉了,直接打开进行筛选就能够了。

图片 12

图片 13

--查看跟踪文件以表显示
select * from ::fn_trace_gettable('F:\SQLTest\.trc',1)

 

小编们也足以因而上边包车型地铁言辞找到这么些跟踪的记录

@eventid 要打开的轩然大波的 ID

--创建跟踪文件返回值
declare @rc int
--创建一个跟踪句柄
declare @TraceID int
--创建跟踪文件路径
declare @TraceFilePath nvarchar(500)
set @TraceFilePath=N'F:\SQLTest\'
--跟踪文件的大小
declare @maxfilesize bigint
set @maxfilesize=5
--设置停止的时间
declare @EndTime datetime
set @EndTime=null
--设置系统默认的操作
declare @options int
set @options=2
--设置默认滚动文件的数目
declare @filecount int
set @filecount=5

exec @rc=sp_trace_Create
@TraceID output,
@options,
@TraceFilePath,
@maxfilesize,
@EndTime,
@filecount
if(@rc=0)
select  @TraceID

接下来,大家运用方面包车型客车死锁脚本,运行获取死锁的捕捉

先是个:2表示滚动文件;

大家透过上边包车型客车跟踪创设的进程,能够在系统自带的默许的sys.traces中找到该跟踪的缜密
图片 14

图片 15

其次个:表示近来选取的trace文件路径,根据它大家能够找到任何的跟踪文件,暗许是一致目录下

通过如下脚本删除到具备的跟踪

由此如下存款和储蓄进程,将大家自定的追踪运转

 

本身信任如用过SQL Server数据库的人,都会或多或少的应用过SQL
Profiler工具。这个人正是运用SQL
Trace形成的二个图形化操作工具,我们平素进去本篇的主旨。

接下来,大家采纳方面包车型地铁死锁脚本,运维获取死锁的捕捉

图片 16

当运维到一段时间之后,大家平昔拷贝下来,找台电脑分析就能够了。

办法参考本篇的上半有的。

此措施能将数据库执行的装有SQL滚动记录下来,以预防SQL
Server宕机之后的事故查找。

@stoptime 跟踪停止的小运,利用它我们得以定时跟踪截至的日子

**@options **内定为跟踪设置的选项,系统暗许提供的多少个选择:

 

诸如大家能够动用如下脚本进行创办 

首先个:2意味着滚动文件;

那里面最常用的就是:

将该脚本保存到二个职位,然后大家开拓,笔者顺手将默许的公文路径添加上

图片 17

当运营到一段时间之后,大家一贯拷贝下来,找台电脑分析就能够了。

图片 18

/****************************************************/
/* Created by: SQL Server 2008 Profiler             */
/* Date: 2014/11/23  20:28:11         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
--可以更改文件大小
set @maxfilesize = 5 

--默认死锁文件放置目录
declare @FilePath nvarchar(max)
set @FilePath=N'F:\SQLTest\DeadLock.trc'
-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, @FilePath, @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 137, 15, @on
exec sp_trace_setevent @TraceID, 137, 32, @on
exec sp_trace_setevent @TraceID, 137, 1, @on
exec sp_trace_setevent @TraceID, 137, 13, @on
exec sp_trace_setevent @TraceID, 137, 22, @on
exec sp_trace_setevent @TraceID, 148, 11, @on
exec sp_trace_setevent @TraceID, 148, 12, @on
exec sp_trace_setevent @TraceID, 148, 14, @on
exec sp_trace_setevent @TraceID, 148, 1, @on
exec sp_trace_setevent @TraceID, 26, 15, @on
exec sp_trace_setevent @TraceID, 26, 32, @on
exec sp_trace_setevent @TraceID, 26, 1, @on
exec sp_trace_setevent @TraceID, 26, 9, @on
exec sp_trace_setevent @TraceID, 26, 57, @on
exec sp_trace_setevent @TraceID, 26, 2, @on
exec sp_trace_setevent @TraceID, 26, 10, @on
exec sp_trace_setevent @TraceID, 26, 11, @on
exec sp_trace_setevent @TraceID, 26, 35, @on
exec sp_trace_setevent @TraceID, 26, 12, @on
exec sp_trace_setevent @TraceID, 26, 13, @on
exec sp_trace_setevent @TraceID, 26, 6, @on
exec sp_trace_setevent @TraceID, 26, 14, @on
exec sp_trace_setevent @TraceID, 26, 22, @on
exec sp_trace_setevent @TraceID, 25, 15, @on
exec sp_trace_setevent @TraceID, 25, 32, @on
exec sp_trace_setevent @TraceID, 25, 1, @on
exec sp_trace_setevent @TraceID, 25, 9, @on
exec sp_trace_setevent @TraceID, 25, 57, @on
exec sp_trace_setevent @TraceID, 25, 2, @on
exec sp_trace_setevent @TraceID, 25, 10, @on
exec sp_trace_setevent @TraceID, 25, 11, @on
exec sp_trace_setevent @TraceID, 25, 35, @on
exec sp_trace_setevent @TraceID, 25, 12, @on
exec sp_trace_setevent @TraceID, 25, 13, @on
exec sp_trace_setevent @TraceID, 25, 6, @on
exec sp_trace_setevent @TraceID, 25, 14, @on
exec sp_trace_setevent @TraceID, 25, 22, @on
exec sp_trace_setevent @TraceID, 59, 32, @on
exec sp_trace_setevent @TraceID, 59, 1, @on
exec sp_trace_setevent @TraceID, 59, 57, @on
exec sp_trace_setevent @TraceID, 59, 2, @on
exec sp_trace_setevent @TraceID, 59, 14, @on
exec sp_trace_setevent @TraceID, 59, 22, @on
exec sp_trace_setevent @TraceID, 59, 35, @on
exec sp_trace_setevent @TraceID, 59, 12, @on
exec sp_trace_setevent @TraceID, 60, 32, @on
exec sp_trace_setevent @TraceID, 60, 9, @on
exec sp_trace_setevent @TraceID, 60, 57, @on
exec sp_trace_setevent @TraceID, 60, 10, @on
exec sp_trace_setevent @TraceID, 60, 11, @on
exec sp_trace_setevent @TraceID, 60, 35, @on
exec sp_trace_setevent @TraceID, 60, 12, @on
exec sp_trace_setevent @TraceID, 60, 6, @on
exec sp_trace_setevent @TraceID, 60, 14, @on
exec sp_trace_setevent @TraceID, 60, 22, @on
exec sp_trace_setevent @TraceID, 189, 15, @on
exec sp_trace_setevent @TraceID, 189, 32, @on
exec sp_trace_setevent @TraceID, 189, 1, @on
exec sp_trace_setevent @TraceID, 189, 9, @on
exec sp_trace_setevent @TraceID, 189, 57, @on
exec sp_trace_setevent @TraceID, 189, 2, @on
exec sp_trace_setevent @TraceID, 189, 10, @on
exec sp_trace_setevent @TraceID, 189, 11, @on
exec sp_trace_setevent @TraceID, 189, 35, @on
exec sp_trace_setevent @TraceID, 189, 12, @on
exec sp_trace_setevent @TraceID, 189, 13, @on
exec sp_trace_setevent @TraceID, 189, 6, @on
exec sp_trace_setevent @TraceID, 189, 14, @on
exec sp_trace_setevent @TraceID, 189, 22, @on
exec sp_trace_setevent @TraceID, 45, 16, @on
exec sp_trace_setevent @TraceID, 45, 1, @on
exec sp_trace_setevent @TraceID, 45, 9, @on
exec sp_trace_setevent @TraceID, 45, 17, @on
exec sp_trace_setevent @TraceID, 45, 10, @on
exec sp_trace_setevent @TraceID, 45, 18, @on
exec sp_trace_setevent @TraceID, 45, 11, @on
exec sp_trace_setevent @TraceID, 45, 35, @on
exec sp_trace_setevent @TraceID, 45, 12, @on
exec sp_trace_setevent @TraceID, 45, 13, @on
exec sp_trace_setevent @TraceID, 45, 6, @on
exec sp_trace_setevent @TraceID, 45, 14, @on
exec sp_trace_setevent @TraceID, 45, 22, @on
exec sp_trace_setevent @TraceID, 45, 15, @on
exec sp_trace_setevent @TraceID, 44, 1, @on
exec sp_trace_setevent @TraceID, 44, 9, @on
exec sp_trace_setevent @TraceID, 44, 10, @on
exec sp_trace_setevent @TraceID, 44, 11, @on
exec sp_trace_setevent @TraceID, 44, 35, @on
exec sp_trace_setevent @TraceID, 44, 12, @on
exec sp_trace_setevent @TraceID, 44, 6, @on
exec sp_trace_setevent @TraceID, 44, 14, @on
exec sp_trace_setevent @TraceID, 44, 22, @on
exec sp_trace_setevent @TraceID, 41, 15, @on
exec sp_trace_setevent @TraceID, 41, 16, @on
exec sp_trace_setevent @TraceID, 41, 1, @on
exec sp_trace_setevent @TraceID, 41, 9, @on
exec sp_trace_setevent @TraceID, 41, 17, @on
exec sp_trace_setevent @TraceID, 41, 10, @on
exec sp_trace_setevent @TraceID, 41, 18, @on
exec sp_trace_setevent @TraceID, 41, 11, @on
exec sp_trace_setevent @TraceID, 41, 35, @on
exec sp_trace_setevent @TraceID, 41, 12, @on
exec sp_trace_setevent @TraceID, 41, 13, @on
exec sp_trace_setevent @TraceID, 41, 6, @on
exec sp_trace_setevent @TraceID, 41, 14, @on
exec sp_trace_setevent @TraceID, 40, 1, @on
exec sp_trace_setevent @TraceID, 40, 9, @on
exec sp_trace_setevent @TraceID, 40, 6, @on
exec sp_trace_setevent @TraceID, 40, 10, @on
exec sp_trace_setevent @TraceID, 40, 14, @on
exec sp_trace_setevent @TraceID, 40, 11, @on
exec sp_trace_setevent @TraceID, 40, 35, @on
exec sp_trace_setevent @TraceID, 40, 12, @on


-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - efbc9d24-69cd-465f-8daf-e38493da0332'
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

                  8制定服务器产生的最后5MB的跟踪音信记录由服务器保存。

一言以蔽之的举多少个使用场景:

主意参考本篇的上半有个别。

图片 19

 

图片 20

图片 21

图片 22

咱们经过上面包车型大巴跟踪成立的长河,能够在系统自带的暗中认可的sys.traces中找到该跟踪的密切
图片 23

内部最重庆大学的便是岁月ID,那些是SQL
Server为大家提供的片段列的码表时间值,具体值能够参照联机丛书 sp_trace_setevent
(Transact-SQL)
.aspx)

通过如下存款和储蓄进度,将咱们自定的寻踪运行

通过以上的布置会自行配置成多少个滚动文件,当达到默许的最大文件容积5MB的时候,就在三个文本中循环滚动依次更新。

那种情势接近天经地义,不过它也有自笔者的弱项,我们来看:

 

图片 24

 

@on 表示事件意况

图片 25

图片 26

select * from sys.traces

其多个:表示滚动文件的尺寸(单位MB),当到达那么些值就会创建新的轮转文件

以上代码参照院子里大牛宋沄剑,那里大家运用系统的自带的profile进行统一筹划追踪,大家一分区直属机关接选举择系统自带的死锁模板,进行追踪

此处大家来采用祥和新建跟踪来跟踪2个死锁的产生进度,并且将其记录到大家的Trace文件中,那里大家来制作二个死锁

比如说我们能够行使如下脚本实行创办 

图片 27

@options 钦命为跟踪设置的选项,系统私下认可提供的多少个挑选:

参照作者博文的上边介绍,只需求将这些艺术囤积于储存进程,然后设置成实例运行后运营,那么恭喜你的SQL
Server已经成功装上了黑匣子引擎,假若有一天突然宕机,大家只须要开辟此黑匣子就能够。

参照笔者博文的方面介绍,只须求将以此法子囤积于储存进度,然后设置成实例运维后运行,那么恭喜您的SQL
Server已经打响装上了黑匣子引擎,假诺有一天突然宕机,大家只必要打开此黑匣子就足以。

图片 28

图片 29

图片 30

 

其一跟踪通过在sp_trace_create的暗中同意@option参数设置为8来布局的。代码如下:

sp_trace_setevent [ @traceid = ] trace_id  
          , [ @eventid = ] event_id 
          , [ @columnid = ] column_id 
          , [ @on = ] on

图片 31

找到该目录,大家查阅下该公文:

**@columnid **要为该事件添加的列的 ID

                  8制定服务器爆发的结尾5MB的跟踪音信记录由服务器保存。

图片 32

 

因而如下命令进行跟踪的删减

下一场设置,暗中认可的SPID为超出等于50,小于50的为系统自有事件

在线生产库为什么突然宕机?数百张数据表为什么不见?刚打好补丁的种类为啥屡遭毒手?新加上的新闻表为啥频频丢失?某张表字段的突然改变,毕竟为啥人所为?那些个匿名的拜访背后,毕竟是人是鬼?突然增添的增量数据,终究是对是错?数百兆的日记爆炸式的提升背后又隐蔽着什么?这一且的幕后,是应用程序的BUG依然用户品质的不够?

图片 33

SQL
Server自己自带的Profile工具就提供编辑脚本的机能,大家将方面包车型客车设计,导出成Trace脚本,我们点击“文件”,导出该规划脚本

exec sp_trace_setevent 2,12,1,1
exec sp_trace_setevent 2,13,1,1

@traceid  系统暗许分配跟踪的ID号

--创建跟踪文件返回值
declare @rc int
--创建一个跟踪句柄
declare @TraceID int
--创建跟踪文件路径
declare @TraceFilePath nvarchar(500)
set @TraceFilePath=N'F:\SQLTest\'
--跟踪文件的大小
declare @maxfilesize bigint
set @maxfilesize=5
--设置停止的时间
declare @EndTime datetime
set @EndTime=null
--设置系统默认的操作
declare @options int
set @options=2
--设置默认滚动文件的数目
declare @filecount int
set @filecount=5

exec @rc=sp_trace_Create
@TraceID output,
@options,
@TraceFilePath,
@maxfilesize,
@EndTime,
@filecount
if(@rc=0)
select  @TraceID

                  2表示当文件写满的时候,关闭当前跟踪并创建新文件。

将大家刚刚的全体操作,已经追踪出来了。

select * from sys.traces
where id=2

图片 34

SQL Server 二零零六 – Default Trace
(暗中同意跟踪)

图片 35

@tracefile 跟踪文件的途径,那里能够是share的路径

 

图片 36

图片 37

那么些图像化的工具就比较熟知了,直接打开进行筛选就能够了。

图片 38

sp_trace_create [ @traceid = ] trace_id OUTPUT 
          , [ @options = ] option_value  
          , [ @tracefile = ] 'trace_file' 
     [ , [ @maxfilesize = ] max_file_size ]
     [ , [ @stoptime = ] 'stop_time' ]
     [ , [ @filecount = ] 'max_rollover_files' ]

作者们定义追踪全部语句批量操作的寻踪,从地方表大家能够搜索到为12,13

 

 

图片 39

DECLARE @Traced INT
EXEC sp_trace_create
@Traced OUTPUT,
@options=8
EXEC sp_trace_setstatus @Traced,1

迄今甘休,大家新建的追踪已经开端运营了,我们得以行使方面包车型客车章程,来查看大家转移的寻踪文件了,其实多数时候,我们都是运用此种方法设置好”圈套“,等待鱼儿上网

 

@eventid 要开辟的事件的 ID

图片 40

以此也是使用SQL Server为大家提供的操作函数

此处大家来使用本身新建跟踪来跟踪一个死锁的发出经过,并且将其记录到咱们的Trace文件中,那里大家来制作3个死锁

 

第四个:当前跟踪的状态:0 甘休;1 运维

大家只须求将那个剧本运维就足以,当然此段脚本,在实例重启的时候,全数的trace都会删除掉,能够将该段代码改成存款和储蓄进度,然后设置成实例运行的时候运维,

一提到跟踪俩字,很四人想到警察匪徒片中的场景,同样在大家的SQL
Server数据库中“跟踪”也是无处不在的,如若大家采纳好了跟踪技术,就可以针对一些特定的光景做定向分析,找出丰裕的证据来破案。

/****************************************************/
/* Created by: SQL Server 2008 Profiler             */
/* Date: 2014/11/23  20:28:11         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
--可以更改文件大小
set @maxfilesize = 5 

--默认死锁文件放置目录
declare @FilePath nvarchar(max)
set @FilePath=N'F:\SQLTest\DeadLock.trc'
-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, @FilePath, @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 137, 15, @on
exec sp_trace_setevent @TraceID, 137, 32, @on
exec sp_trace_setevent @TraceID, 137, 1, @on
exec sp_trace_setevent @TraceID, 137, 13, @on
exec sp_trace_setevent @TraceID, 137, 22, @on
exec sp_trace_setevent @TraceID, 148, 11, @on
exec sp_trace_setevent @TraceID, 148, 12, @on
exec sp_trace_setevent @TraceID, 148, 14, @on
exec sp_trace_setevent @TraceID, 148, 1, @on
exec sp_trace_setevent @TraceID, 26, 15, @on
exec sp_trace_setevent @TraceID, 26, 32, @on
exec sp_trace_setevent @TraceID, 26, 1, @on
exec sp_trace_setevent @TraceID, 26, 9, @on
exec sp_trace_setevent @TraceID, 26, 57, @on
exec sp_trace_setevent @TraceID, 26, 2, @on
exec sp_trace_setevent @TraceID, 26, 10, @on
exec sp_trace_setevent @TraceID, 26, 11, @on
exec sp_trace_setevent @TraceID, 26, 35, @on
exec sp_trace_setevent @TraceID, 26, 12, @on
exec sp_trace_setevent @TraceID, 26, 13, @on
exec sp_trace_setevent @TraceID, 26, 6, @on
exec sp_trace_setevent @TraceID, 26, 14, @on
exec sp_trace_setevent @TraceID, 26, 22, @on
exec sp_trace_setevent @TraceID, 25, 15, @on
exec sp_trace_setevent @TraceID, 25, 32, @on
exec sp_trace_setevent @TraceID, 25, 1, @on
exec sp_trace_setevent @TraceID, 25, 9, @on
exec sp_trace_setevent @TraceID, 25, 57, @on
exec sp_trace_setevent @TraceID, 25, 2, @on
exec sp_trace_setevent @TraceID, 25, 10, @on
exec sp_trace_setevent @TraceID, 25, 11, @on
exec sp_trace_setevent @TraceID, 25, 35, @on
exec sp_trace_setevent @TraceID, 25, 12, @on
exec sp_trace_setevent @TraceID, 25, 13, @on
exec sp_trace_setevent @TraceID, 25, 6, @on
exec sp_trace_setevent @TraceID, 25, 14, @on
exec sp_trace_setevent @TraceID, 25, 22, @on
exec sp_trace_setevent @TraceID, 59, 32, @on
exec sp_trace_setevent @TraceID, 59, 1, @on
exec sp_trace_setevent @TraceID, 59, 57, @on
exec sp_trace_setevent @TraceID, 59, 2, @on
exec sp_trace_setevent @TraceID, 59, 14, @on
exec sp_trace_setevent @TraceID, 59, 22, @on
exec sp_trace_setevent @TraceID, 59, 35, @on
exec sp_trace_setevent @TraceID, 59, 12, @on
exec sp_trace_setevent @TraceID, 60, 32, @on
exec sp_trace_setevent @TraceID, 60, 9, @on
exec sp_trace_setevent @TraceID, 60, 57, @on
exec sp_trace_setevent @TraceID, 60, 10, @on
exec sp_trace_setevent @TraceID, 60, 11, @on
exec sp_trace_setevent @TraceID, 60, 35, @on
exec sp_trace_setevent @TraceID, 60, 12, @on
exec sp_trace_setevent @TraceID, 60, 6, @on
exec sp_trace_setevent @TraceID, 60, 14, @on
exec sp_trace_setevent @TraceID, 60, 22, @on
exec sp_trace_setevent @TraceID, 189, 15, @on
exec sp_trace_setevent @TraceID, 189, 32, @on
exec sp_trace_setevent @TraceID, 189, 1, @on
exec sp_trace_setevent @TraceID, 189, 9, @on
exec sp_trace_setevent @TraceID, 189, 57, @on
exec sp_trace_setevent @TraceID, 189, 2, @on
exec sp_trace_setevent @TraceID, 189, 10, @on
exec sp_trace_setevent @TraceID, 189, 11, @on
exec sp_trace_setevent @TraceID, 189, 35, @on
exec sp_trace_setevent @TraceID, 189, 12, @on
exec sp_trace_setevent @TraceID, 189, 13, @on
exec sp_trace_setevent @TraceID, 189, 6, @on
exec sp_trace_setevent @TraceID, 189, 14, @on
exec sp_trace_setevent @TraceID, 189, 22, @on
exec sp_trace_setevent @TraceID, 45, 16, @on
exec sp_trace_setevent @TraceID, 45, 1, @on
exec sp_trace_setevent @TraceID, 45, 9, @on
exec sp_trace_setevent @TraceID, 45, 17, @on
exec sp_trace_setevent @TraceID, 45, 10, @on
exec sp_trace_setevent @TraceID, 45, 18, @on
exec sp_trace_setevent @TraceID, 45, 11, @on
exec sp_trace_setevent @TraceID, 45, 35, @on
exec sp_trace_setevent @TraceID, 45, 12, @on
exec sp_trace_setevent @TraceID, 45, 13, @on
exec sp_trace_setevent @TraceID, 45, 6, @on
exec sp_trace_setevent @TraceID, 45, 14, @on
exec sp_trace_setevent @TraceID, 45, 22, @on
exec sp_trace_setevent @TraceID, 45, 15, @on
exec sp_trace_setevent @TraceID, 44, 1, @on
exec sp_trace_setevent @TraceID, 44, 9, @on
exec sp_trace_setevent @TraceID, 44, 10, @on
exec sp_trace_setevent @TraceID, 44, 11, @on
exec sp_trace_setevent @TraceID, 44, 35, @on
exec sp_trace_setevent @TraceID, 44, 12, @on
exec sp_trace_setevent @TraceID, 44, 6, @on
exec sp_trace_setevent @TraceID, 44, 14, @on
exec sp_trace_setevent @TraceID, 44, 22, @on
exec sp_trace_setevent @TraceID, 41, 15, @on
exec sp_trace_setevent @TraceID, 41, 16, @on
exec sp_trace_setevent @TraceID, 41, 1, @on
exec sp_trace_setevent @TraceID, 41, 9, @on
exec sp_trace_setevent @TraceID, 41, 17, @on
exec sp_trace_setevent @TraceID, 41, 10, @on
exec sp_trace_setevent @TraceID, 41, 18, @on
exec sp_trace_setevent @TraceID, 41, 11, @on
exec sp_trace_setevent @TraceID, 41, 35, @on
exec sp_trace_setevent @TraceID, 41, 12, @on
exec sp_trace_setevent @TraceID, 41, 13, @on
exec sp_trace_setevent @TraceID, 41, 6, @on
exec sp_trace_setevent @TraceID, 41, 14, @on
exec sp_trace_setevent @TraceID, 40, 1, @on
exec sp_trace_setevent @TraceID, 40, 9, @on
exec sp_trace_setevent @TraceID, 40, 6, @on
exec sp_trace_setevent @TraceID, 40, 10, @on
exec sp_trace_setevent @TraceID, 40, 14, @on
exec sp_trace_setevent @TraceID, 40, 11, @on
exec sp_trace_setevent @TraceID, 40, 35, @on
exec sp_trace_setevent @TraceID, 40, 12, @on


-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - efbc9d24-69cd-465f-8daf-e38493da0332'
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

本来我们也得以设置其他参数,比如运营时间,运维时刻,跟踪文件大小,地点,数量等,删除不必要的trace跟踪事件…

图片 41

若果没有开启,大家也足以利用如下语句举办开启,或许关闭等操作

 

@filecount 暗中同意生产的跟踪文件的多寡,比如暗中认可的为5个,那就在第⑥个文件写完的时候实行覆盖第一个文本滚动

图片 42

                  2表示当文件写满的时候,关闭当前跟踪并创设新文件。

 

图片 43

结语

一.查看系统默许跟踪音讯(Default Trace)

图片 44

透过如下命令进行跟踪的闭馆

一.查看系统私下认可跟踪音信(Default Trace)

                  4代表借使不可能将跟踪写入文件,不管什么样来头造成,SQL
Server则会关闭。这些能够使用此选项,追踪难题

当然如若感到生成的文书5MB有点小,能够手动配置更改大小,大概自定义文件路径,这几个都以同意自定义设置的。

更灵活的艺术是运用非业务高峰期,利用SQL
Server自带的邮件提示成效,直接检查和测试出标题,然后Send Email….

@stoptime 跟踪结束的时日,利用它我们得以定时跟踪停止的日子

 

因而以下命令找到私下认可跟踪的文件路径

@columnid 要为该事件添加的列的 ID

以上代码参照院子里大牛宋沄剑,那里我们采取体系的自带的profile实行统筹追踪,我们直接选择系统自带的死锁模板,举行追踪

DECLARE @TraceID INT
DECLARE @maxfilesize BIGINT
SET @maxfilesize=25
DECLARE @tracefile nvarchar(245)
SET @tracefile=N'F:\SQLTest\TRACE\MYTRACE.trc'
EXEC sp_trace_create
@TraceID OUTPUT,
@options=8,
@tracefile=NULL,
@maxfilesize=@maxfilesize
EXEC sp_trace_setstatus @TraceID,1
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 

 默许的跟踪文件,提供的跟踪音信依旧很全的,从中大家能够找到登录人,操作音信等,上边的截图只是包括的片段新闻。大家能够运用该语句举行温馨的加工,然后拿走更管用的音讯。

图片 45

图片 46

--设置跟踪状态以启动
exec sp_trace_setstatus @TraceID,1

经过如下脚本删除到拥有的跟踪

二.自定义跟踪音信(Default Trace)

图片 47

理所当然大家也足以安装别的参数,比如运转时间,运转时刻,跟踪文件大小,地点,数量等,删除不须求的trace跟踪事件…

经过以下命令找到暗许跟踪的文书路径

图片 48

前言

参考文献有上面

四.SQL Server中黑匣子(二〇一五年二月二日晚补充)

通过以上的布局会活动配置成多少个滚动文件,当达到默许的最大文件体积5MB的时候,就在四个文件中循环滚动依次更新。

本条跟踪通过在sp_trace_create的私下认可@option参数设置为8来配置的。代码如下:

上述的跟踪事件中,基本包蕴了SQL
Server中所能做的任何操作,大家得以依照本人供给进行定义,当我们得以本着常常平日碰到的部分难题展开稳定,比如:死锁、等待、登录失利等等吧…当然也能够追踪有个别人的装有行为,那里大家来定义几个来看看

 作者创制了一张表,通过地点的跟踪,能够跟踪到该记录的信息,依据区其余过滤消息,我们得以查询出到跟踪的某部库的某部表的改观消息,包罗:46创办(Created)、47删减(Deleted)、93文本自动增进音信(Log
File Auto Grow)、146修改(Alter)、20意味着错误日志(Login Failed)

DECLARE @Traced INT
EXEC sp_trace_create
@Traced OUTPUT,
@options=8
EXEC sp_trace_setstatus @Traced,1

 

--获取跟踪文件中前100行执行内容
SELECT TOP 100
 gt.[HostName] 
,gt.[ServerName] 
,gt.[DatabaseName] 
,gt.[SPID] 
,gt.[ObjectName] 
,gt.[objecttype] [ObjectTypeID] 
,sv.[subclass_name] [ObjectType] 
,e.[category_id] [CategoryID] 
,c.[Name] [Category] 
,gt.[EventClass] [EventID] 
,e.[Name] [EventName] 
,gt.[LoginName] 
,gt.[ApplicationName] 
,gt.[StartTime] 
,gt.[TextData] 
FROM fn_trace_gettable('E:\dataDefaultFileManger\MSSQL10.MSSQLSERVER\MSSQL\Log\log_1267.trc', DEFAULT) gt 
LEFT JOIN sys.trace_subclass_values sv 
ON gt.[eventclass] = sv.[trace_event_id] AND sv.[subclass_value] = gt.[objecttype] 
INNER JOIN sys.trace_events e 
ON gt.[eventclass] = e.[trace_event_id] 
INNER JOIN sys.trace_categories c 
ON e.[category_id] = c.[category_id] 
WHERE gt.[spid] > 50 AND --50以内的spid为系统使用
    gt.[DatabaseName] = 'master' AND --根据DatabaseName过滤
    gt.[ObjectName] = 'fn_trace_getinfo' AND --根据objectname过滤
    e.[category_id]  = 5 AND --category 5表示对象,8表示安全
    e.[trace_event_id] = 46 
    --trace_event_id 
    --46表示Create对象(Object:Created),
    --47表示Drop对象(Object:Deleted),
    --93表示日志文件自动增长(Log File Auto Grow),
    --164表示Alter对象(Object:Altered),
    --20表示错误日志(Audit Login Failed)
ORDER BY [StartTime] DESC
sp_trace_create [ @traceid = ] trace_id OUTPUT 
          , [ @options = ] option_value  
          , [ @tracefile = ] 'trace_file' 
     [ , [ @maxfilesize = ] max_file_size ]
     [ , [ @stoptime = ] 'stop_time' ]
     [ , [ @filecount = ] 'max_rollover_files' ]

 暗许的跟踪文件,提供的跟踪消息仍旧很全的,从中大家得以找到登录人,操作音信等,上边的截图只是含有的有的新闻。大家得以选拔该语句举办温馨的加工,然后拿走更管用的音讯。

select * from ::fn_trace_getinfo(0)

假使没有开启,我们也能够利用如下语句实行开启,恐怕关闭等操作

图片 49

 

 

系统暗中认可提供陆个跟踪文件,并且每1个文书暗许大小都以20MB,SQL
Server会本人维护这四个文件,当实例重启的时候仍然到达最大值的时候,之后会再也生成新的文书,将最早的跟踪文件删除,依次滚动更新。

@traceid  系统暗许分配跟踪的ID号

通过如下命令举行跟踪的倒闭

那其间最常用的就是:

请关怀本篇小说,让大家一道使用数据库的“跟踪”(Trace)走进数据库背后,查看其里面原理。

图片 50

笔者们透过以下命令来查看跟踪文件中的内容:

 

笔者深信如用过SQL Server数据库的人,都会或多或少的施用过SQL
Profiler工具。这家伙正是利用SQL
Trace形成的多个图形化操作工具,我们间接进入本篇的主题。

以此也是使用SQL Server为我们提供的操作函数

图片 51

 

第陆个:跟踪的告一段落时间,这里为Null,表示一贯不一定的终止时间

select * from sys.configurations where configuration_id = 1568

应用SQL Trace来实现SQL
Server的跟踪操作

--新建追踪的存储过程
use master
go
create proc StartBlackBoxTrace
as
begin
    --默认开启追踪所有的SQL 执行语句,文件文件路径为默认
    DECLARE @TraceID int
    DECLARE @MaxFileSize bigint
    SET @MaxFileSize=25
    EXEC SP_TRACE_CREATE
    @TraceID OUTPUT,
    8,
    NULL,
    @MaxFileSize
    EXEC SP_TRACE_SETSTATUS @TraceID,1
END

--将该存储过程设置为SQL Server服务启动时自动启动
EXEC sp_procoption
'StartBlackBoxTrace','STARTUP','ON'
GO

当然,那里自身还足以行使SQL
Server自带的Profile工具,打开查看跟踪文件中的内容。

那种措施接近不错,然则它也有自作者的欠缺,大家来看:

图片 52

第七个:跟踪的平息时间,那里为Null,表示不曾稳定的告一段落时间

在生育条件中,以上多少个分类都是比较常用的,对固定部分标题标定点能够在找到充足的凭据可循,比如某厮将数据库数据删除掉了还不认同等,那中间的Login
Failed新闻,能够追踪出有那么用户尝试登陆过数据库,并且失利,如若大面积的出现那种地方,那就要严防黑客袭击了。

经过如下命令进行跟踪的删减

 

大家知道在SQL
Server默许的跟踪文件在实例重启时候,都会烟消云散,所以我们得以经过如下方法消除,保障在历次实例重新启航的时候都会实行该追踪

能够看看,大家早就顺遂的追踪到那些死锁。大家掌握那种追踪是高资金的,并且我们偶尔不亮堂死锁暴发的切切实实时刻,所以不能够一向开着这么些Profile,出于品质考虑也不建议如此做,所以我们利用新建的Trace文件,来保存改脚本,然后重定向到大家友好的文书夹,将死锁的音讯放置到该文件夹下,提供更大灵活性。

--开启Default Trace
sp_configure 'show advanced options' , 1 ;
GO
RECONFIGURE;
GO
sp_configure 'default trace enabled' , 1 ;
GO
RECONFIGURE;
GO

--测试是否开启
EXEC sp_configure 'default trace enabled';
GO

--关闭Default Trace
sp_configure 'default trace enabled' , 0 ;
GO
RECONFIGURE;
GO
sp_configure 'show advanced options' , 0 ;
GO
RECONFIGURE;
GO

上述命令归来的结果值,各样值(property)代表的含义如下:

理所当然,那里小编还足以选拔SQL
Server自带的Profile工具,打开查看跟踪文件中的内容。

图片 53

能够见到,大家早已胜利的寻踪到那个死锁。大家精晓那种追踪是高资本的,并且大家有时候不精通死锁发生的实际时间,所以不能够间接开着那些Profile,出于质量考虑也不提出如此做,所以大家选择新建的Trace文件,来保存改脚本,然后重定向到大家友好的文书夹,将死锁的新闻放置到该文件夹下,提供更大灵活性。

小编们能够利用如下语句,查找跟踪文件的音讯

Trace作为三个很好的数据库追踪工具,在SQL Server
200第55中学便集成到系统效用中去,并且私下认可是打开的,当然我们也得以手动的密闭它,它坐落sp_config配置参数中,大家得以经过以下语句查看:

**四.SQL Server中黑匣子(二〇一四年3月十五日晚补充)**

图片 54图片 55

选择如下系统存款和储蓄进程,我们能够创立自定义的Trace

图片 56

 

到现在,我们新建的追踪已经先导运营了,我们得以应用方面包车型客车点子,来查阅我们转变的追踪文件了,其实超过一半时候,我们都以接纳此种方法设置好”圈套“,等待鱼儿上网

**三.死锁案例(2016年10月2十七日晚补充)**

在线生产库为啥突然宕机?数百张数据表为什么不见?刚打好补丁的系统为啥屡遭毒手?新加上的消息表为什么频频丢失?某张表字段的黑马改变,究竟为啥人所为?那些个匿名的访问背后,毕竟是人是鬼?突然扩张的增量数据,毕竟是对是错?数百兆的日记爆炸式的抓牢背后又隐藏着如何?这一且的骨子里,是应用程序的BUG依然用户品质的不够?

 

事件号

事件名称

说明

10                 

RPC:Completed

在完成了远程过程调用 (RPC) 时发生。

11

RPC:Starting

在启动了 RPC 时发生。

12

SQL:BatchCompleted

在完成了 Transact-SQL 批处理时发生。

13

SQL:BatchStarting

在启动了 Transact-SQL 批处理时发生。

14

Audit Login

在用户成功登录到 SQL Server 时发生。

15

Audit Logout

在用户从 SQL Server 注销时发生。

16

Attention

在发生需要关注的事件(如客户端中断请求或客户端连接中断)时发生。

17

ExistingConnection

检测在启动跟踪前连接到 SQL Server 的用户的所有活动。

18

Audit Server Starts and Stops

在修改 SQL Server 服务状态时发生。

20

Audit Login Failed

指示试图从客户端登录到 SQL Server 失败。

21

EventLog

指示已将事件记录到 Windows 应用程序日志中。

22

ErrorLog

指示已将错误事件记录到 SQL Server 错误日志中。

23

Lock:Released

指示已释放某个资源(如页)的锁。

24

Lock:Acquired

指示获取了某个资源(如数据页)的锁。

25

Lock:Deadlock

指示两个并发事务由于试图获得对方事务拥有的资源的不兼容锁而发生了相互死锁。

26

Lock:Cancel

指示已取消获取资源锁(例如,由于死锁)。

27

Lock:Timeout

指示由于其他事务持有所需资源的阻塞锁而使对资源(例如页)锁的请求超时。 超时由 @@LOCK_TIMEOUT 函数确定,并可用 SET LOCK_TIMEOUT 语句设置。

28

Degree of Parallelism Event(7.0 插入)

在执行 SELECT、INSERT 或 UPDATE 语句之前发生。

33

Exception

指示 SQL Server 中出现了异常。

34

SP:CacheMiss

指示未在过程缓存中找到某个存储过程。

35

SP:CacheInsert

指示某个项被插入到过程缓存中。

36

SP:CacheRemove

指示从过程缓存中删除了某个项。

37

SP:Recompile

指示已重新编译存储过程。

38

SP:CacheHit

指示在过程缓存中找到了存储过程。

40

SQL:StmtStarting

在启动了 Transact-SQL 语句时发生。

41

SQL:StmtCompleted

在完成了 Transact-SQL 语句时发生。

42

SP:Starting

指示启动了存储过程。

43

SP:Completed

指示完成了存储过程。

44

SP:StmtStarting

指示已开始执行存储过程中的 Transact-SQL 语句。

45

SP:StmtCompleted

指示存储过程中的 Transact-SQL 语句已执行完毕。

46

Object:Created

指示 CREATE INDEX、CREATE TABLE 和 CREATE DATABASE 这样的语句已创建了一个对象。

47

Object:Deleted

指示已在 DROP INDEX 和 DROP TABLE 这样的语句中删除了对象。

50

SQL Transaction

跟踪 Transact-SQL BEGIN、COMMIT、SAVE 和 ROLLBACK TRANSACTION 语句。

51

Scan:Started

指示启动了表或索引扫描

52

Scan:Stopped

指示停止了表或索引扫描。

53

CursorOpen

指示 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 语句中打开了一个游标。

54

TransactionLog

将事务写入事务日志时进行跟踪。

55

Hash Warning

指示未在缓冲分区进行的某一哈希操作(例如,哈希联接、哈希聚合、哈希 union 运算、哈希非重复)已恢复为替换计划。 发生此事件的原因可能是递归深度、数据扭曲、跟踪标记或位计数。

58

Auto Stats

指示发生了自动更新索引统计信息。

59

Lock:Deadlock Chain

为导致死锁的每个事件而生成。

60

Lock:Escalation

指示较细粒度的锁转换成了较粗粒度的锁(例如,页锁升级或转换为 TABLE 或 HoBT 锁)。

61

OLE DB Errors

指示发生了 OLE DB 错误。

67

Execution Warnings

指示在执行 SQL Server 语句或存储过程期间发生的任何警告。

68

Showplan Text (Unencoded)

显示所执行 Transact-SQL 语句的计划树。

69

Sort Warnings

指示不适合内存的排序操作。 不包括与创建索引有关的排序操作;只包括某查询内的排序操作(如 SELECT 语句中使用的 ORDER BY 子句)。

70

CursorPrepare

指示已准备了 ODBC、OLE DB 或 DB-Library 用于 Transact-SQL 语句的游标。

71

Prepare SQL

ODBC、OLE DB 或 DB-Library 已准备好了一个或多个要使用的 Transact-SQL 语句。

72

Exec Prepared SQL

ODBC、OLE DB 或 DB-Library 已执行了一个或多个准备好的 Transact-SQL 语句。

73

Unprepare SQL

ODBC、OLE DB 或 DB-Library 已撤消(删除)了一个或多个准备好的 Transact-SQL 语句。

74

CursorExecute

执行了先前由 ODBC、OLE DB 或 DB-Library 为 Transact-SQL 语句准备的游标。

75

CursorRecompile

由 ODBC 或 DB-Library 为 Transact-SQL 语句打开的游标已直接重新编译或由于架构更改而重新编译。

为 ANSI 和非 ANSI 游标触发。

76

CursorImplicitConversion

SQL Server 将 Transact-SQL 语句的游标从一种类型转换为另一种类型。

为 ANSI 和非 ANSI 游标触发。

77

CursorUnprepare

ODBC、OLE DB 或 DB-Library 撤消(删除)了准备好的 Transact-SQL 语句的游标。

78

CursorClose

关闭了先前由 ODBC、OLE DB 或 DB-Library 为 Transact-SQL 语句打开的游标。

79

Missing Column Statistics

可能曾经对优化器有用的列统计信息不可用。

80

Missing Join Predicate

正在执行没有联接谓词的查询。 这可能导致长时间运行查询。

81

Server Memory Change

SQL Server 内存的使用量已增加或减少了 1 MB 或最大服务器内存的 5%(两者中较大者)。

82-91

User Configurable (0-9)

用户定义的事件数据。

92

Data File Auto Grow

指示服务器已自动扩展了数据文件。

93

Log File Auto Grow

指示服务器已自动扩展了日志文件。

94

Data File Auto Shrink

指示服务器已自动收缩了数据文件。

95

Log File Auto Shrink

指示服务器已自动收缩了日志文件。

96

Showplan Text

显示来自查询优化器的 SQL 语句的查询计划树。 请注意,TextData 列不包含此事件的显示计划。

97

Showplan All

显示查询计划,并显示已执行的 SQL 语句的完整编译时详细信息。 请注意,TextData 列不包含此事件的显示计划。

98

Showplan Statistics Profile

显示查询计划,并显示已执行的 SQL 语句的完整运行时详细信息。 请注意,TextData 列不包含此事件的显示计划。

100

RPC Output Parameter

生成每个 RPC 的参数的输出值。

108

Audit Add Login to Server Role Event

在从固定服务器角色添加或删除登录时发生;针对 sp_addsrvrolemember 和 sp_dropsrvrolemember。

112

Audit App Role Change Password Event

在更改应用程序角色的密码时发生。

113

Audit Statement Permission Event

在使用语句权限(如 CREATE TABLE)时发生。

114

Audit Schema Object Access Event

在成功或未成功使用了对象权限(如 SELECT)时发生。

115

Audit Backup/Restore Event

在发出 BACKUP 或 RESTORE 命令时发生。

116

Audit DBCC Event

在发出 DBCC 命令时发生。

117

Audit Change Audit Event

在修改审核跟踪时发生。

118

Audit Object Derived Permission Event

在发出 CREATE、ALTER 和 DROP 对象命令时发生。

119

OLEDB Call Event

为分布式查询和远程存储过程调用 OLE DB 访问接口时发生。

120

OLEDB QueryInterface Event

为分布式查询和远程存储过程调用 OLE DB QueryInterface 时发生。

121

OLEDB DataRead Event

对 OLE DB 访问接口调用数据请求时发生。

122

Showplan XML

在执行 SQL 语句时发生。 包括该事件可以标识 Showplan 运算符。 每个事件都存储在格式正确的 XML 文档中。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

123

SQL:FullTextQuery

执行全文查询时发生。

124

Broker:Conversation

报告 Service Broker 会话的进度。

125

Deprecation Announcement

使用将从 SQL Server 的未来版本中删除的功能时发生。

126

Deprecation Final Support

使用将从 SQL Server 的下一个主版本中删除的功能时发生。

127

Exchange Spill Event

在 tempdb 数据库临时写入并行查询计划中的通信缓冲区时发生。

128

Audit Database Management Event

创建、更改或删除数据库时发生。

129

Audit Database Object Management Event

对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时发生。

130

Audit Database Principal Management Event

创建、更改或删除数据库的主体(如用户)时发生。

131

Audit Schema Object Management Event

创建、更改或删除服务器对象时发生。

132

Audit Server Principal Impersonation Event

服务器范围中发生模拟(如 EXECUTE AS LOGIN)时发生。

133

Audit Database Principal Impersonation Event

数据库范围中发生模拟(如 EXECUTE AS USER 或 SETUSER)时发生。

134

Audit Server Object Take Ownership Event

服务器范围中的对象的所有者发生更改时发生。

135

Audit Database Object Take Ownership Event

数据库范围中的对象的所有者发生更改时发生。

136

Broker:Conversation Group

Service Broker 创建新的会话组或删除现有会话组时发生。

137

Blocked Process Report

进程被阻塞的时间超过了指定的时间时发生。 不包括系统进程或正在等待未发现死锁的资源的进程。 请使用 sp_configure 来配置生成报表时的阈值和频率。

138

Broker:Connection

报告 Service Broker 管理的传输连接的状态。

139

Broker:Forwarded Message Sent

Service Broker 转发消息时发生。

140

Broker:Forwarded Message Dropped

Service Broker 删除用于转发的消息时发生。

141

Broker:Message Classify

Service Broker 确定消息的路由时发生。

142

Broker:Transmission

指示在 Service Broker 传输层中发生了错误。 错误号和状态值指示了错误源。

143

Broker:Queue Disabled

指示检测到有害消息,这是由于在 Service Broker 队列中有五个连续的事务回滚。 该事件包含数据库 ID 和包含有害消息的队列的队列 ID。

146

Showplan XML Statistics Profile

在执行 SQL 语句时发生。 标识 Showplan 运算符,并显示完整的编译时数据。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

148

Deadlock Graph

取消获取锁的尝试时发生,这是因为该尝试是死锁的一部分,并且被选为死锁牺牲品。 提供死锁的 XML 说明。

149

Broker:Remote Message Acknowledgement

Service Broker 发送或收到消息确认时发生。

150

Trace File Close

跟踪文件在回滚期间关闭时发生。

152

Audit Change Database Owner

使用 ALTER AUTHORIZATION 更改数据库的所有者,并且检查执行该操作的权限时发生。

153

Audit Schema Object Take Ownership Event

使用 ALTER AUTHORIZATION 来将所有者分配给对象,并且检查执行该操作的权限时发生。

155

FT:Crawl Started

全文爬网(填充)开始时发生。 用于检查工作线程任务是否拾取了爬网请求。

156

FT:Crawl Stopped

全文爬网(填充)停止时发生。 爬网成功完成或发生错误时停止。

157

FT:Crawl Aborted

在全文爬网过程中遇到异常时发生。 通常导致全文爬网停止。

158

Audit Broker Conversation

报告与 Service Broker 对话安全性相关的审核消息。

159

Audit Broker Login

报告与 Service Broker 传输安全性相关的审核消息。

160

Broker:Message Undeliverable

Service Broker 无法保留收到的消息时发生,该消息应当已传递给某个服务。

161

Broker:Corrupted Message

Service Broker 收到损坏的消息时发生。

162

User Error Message

显示出现错误或异常时用户看到的错误消息。

163

Broker:Activation

队列监视器启动激活存储过程时,发送 QUEUE_ACTIVATION 通知时,或者队列监视器启动的激活存储过程退出时发生。

164

Object:Altered

数据库对象更改时发生。

165

Performance statistics

将经过编译的查询计划第一次缓存、重新编译或从计划缓存中删除时发生。

166

SQL:StmtRecompile

发生语句级别的重新编译时发生。

167

Database Mirroring State Change

镜像数据库的状态更改时发生。

168

Showplan XML For Query Compile

编译 SQL 语句时发生。 显示完整的编译时数据。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

169

Showplan All For Query Compile

编译 SQL 语句时发生。 显示完整的编译时数据。 用于标识 Showplan 运算符。

170

Audit Server Scope GDR Event

指示在服务器范围中发生了权限的授予、拒绝或撤消事件(如创建登录)。

171

Audit Server Object GDR Event

指示发生了对架构对象(如表或函数)的授予、拒绝或撤消事件。

172

Audit Database Object GDR Event

指示发生了对数据库对象(如程序集和架构)的授予、拒绝或撤消事件。

173

Audit Server Operation Event

使用了安全审核操作(如使用了更改设置、资源、外部访问或授权)时发生。

175

Audit Server Alter Trace Event

检查语句的 ALTER TRACE 权限时发生。

176

Audit Server Object Management Event

创建、更改或删除服务器对象时发生。

177

Audit Server Principal Management Event

创建、更改或删除了服务器主体时发生。

178

Audit Database Operation Event

发生数据库操作(如检查或订阅查询通知)时发生。

180

Audit Database Object Access Event

访问数据库对象(如架构)时发生。

181

TM: Begin Tran starting

BEGIN TRANSACTION 请求开始时发生。

182

TM: Begin Tran completed

BEGIN TRANSACTION 请求完成时发生。

183

TM: Promote Tran starting

PROMOTE TRANSACTION 请求开始时发生。

184

TM: Promote Tran completed

PROMOTE TRANSACTION 请求完成时发生。

185

TM: Commit Tran starting

COMMIT TRANSACTION 请求开始时发生。

186

TM: Commit Tran completed

COMMIT TRANSACTION 请求完成时发生。

187

TM: Rollback Tran starting

ROLLBACK TRANSACTION 请求开始时发生。

188

TM: Rollback Tran completed

ROLLBACK TRANSACTION 请求完成时发生。

189

Lock:Timeout (timeout > 0)

对资源(如页)的锁请求超时时发生。

190

Progress Report: Online Index Operation

报告生成进程正在运行时,联机索引生成操作的进度。

191

TM: Save Tran starting

SAVE TRANSACTION 请求开始时发生。

192

TM: Save Tran completed

SAVE TRANSACTION 请求完成时发生。

193

Background Job Error

后台作业不正常终止时发生。

194

OLEDB Provider Information

分布式查询运行并收集对应于提供程序连接的信息时发生。

195

Mount Tape

收到磁带装入请求时发生。

196

Assembly Load

发生加载 CLR 程序集的请求时发生。

198

XQuery Static Type

执行 XQuery 表达式时发生。 此事件类提供静态类型的 XQuery 表达式。

199

QN: subscription

无法订阅查询注册时发生。 TextData 列包含事件的有关信息。

200

QN: parameter table

有关活动订阅的信息存储在内部参数表中。 在创建或删除参数表时发生该事件类。 通常,重新启动数据库时将创建或删除这些表。 TextData 列包含事件的有关信息。

201

QN: template

查询模板代表订阅查询的类。 通常,除参数值以外,相同类中的查询是相同的。 当新的订阅请求针对已存在的类 (Match)、新类 (Create) 或 Drop 类(指示清除没有活动订阅的查询类的模板)时,发生此事件类。 TextData 列包含事件的有关信息。

202

QN: dynamics

跟踪查询通知的内部活动。 TextData 列包含事件的有关信息。

213

Database Suspect Data Page

指示何时将某页添加到 msdb 的 suspect_pages 表。

214

CPU threshold exceeded

指示资源调控器检测到查询超过 CPU 阈值 (REQUEST_MAX_CPU_TIME_SEC) 的时间。

215

指示 LOGON 触发器或资源调控器分类器函数开始执行的时间。

指示 LOGON 触发器或资源调控器分类器函数开始执行的时间。

216

PreConnect:Completed

指示 LOGON 触发器或资源调控器分类器函数完成执行的时间。

217

Plan Guide Successful

指示 SQL Server 已成功为计划指南中包含的查询或批处理生成执行计划。

218

Plan Guide Unsuccessful

指示 SQL Server 无法为包含计划指南的查询或批处理生成执行计划。 SQL Server 尝试在不应用计划指南的情况下为此查询或批处理生成执行计划。 无效的计划指南可能是导致此问题的原因。 您可以通过使用 sys.fn_validate_plan_guide 系统函数验证该计划指南。

第3个:表示近期接纳的trace文件路径,依据它我们能够找到其余的跟踪文件,暗许是同样目录下

运用如下系统存款和储蓄进度,大家可以创建自定义的Trace

--从系统中移除跟踪
exec sp_trace_setstatus @TraceID,2

 

简短的举多少个应用场景:

咱俩只须要将以此本子运维就能够,当然此段脚本,在实例重启的时候,全部的trace都会去除掉,能够将该段代码改成存款和储蓄进度,然后设置成实例运营的时候运维,

将我们刚刚的具备操作,已经追踪出来了。

--设置跟踪状态以停止
exec sp_trace_setstatus @TraceID,0

 我成立了一张表,通过上边的跟踪,能够跟踪到该记录的音信,依照差异的过滤消息,我们得以查询出到跟踪的某部库的某部表的改动音讯,包含:46创办(Created)、47去除(Deleted)、93文本自动拉长音信(Log
File Auto Grow)、146修改(Alter)、20意味错误日志(Login Failed)

图片 57

图片 58

通过地方的台本,咱们曾经创设了1个新的跟踪(trace),不过那么些跟踪状态为0,也正是说还向来不运维,上边大家的步骤正是要为那个跟踪添加事件(event)

我们掌握在SQL
Server暗中认可的跟踪文件在实例重启时候,都会流失,所以大家能够因此如下方法消除,保险在历次实例重新开动的时候都会举行该追踪

图片 59

SQL Server 暗中同意跟踪(Default
Trace)

 

叁 、在SQL Server2011后续版本的 Microsoft SQL Server
将去除该意义,改用扩充事件。

 

事件号

事件名称

说明

10                 

RPC:Completed

在完成了远程过程调用 (RPC) 时发生。

11

RPC:Starting

在启动了 RPC 时发生。

12

SQL:BatchCompleted

在完成了 Transact-SQL 批处理时发生。

13

SQL:BatchStarting

在启动了 Transact-SQL 批处理时发生。

14

Audit Login

在用户成功登录到 SQL Server 时发生。

15

Audit Logout

在用户从 SQL Server 注销时发生。

16

Attention

在发生需要关注的事件(如客户端中断请求或客户端连接中断)时发生。

17

ExistingConnection

检测在启动跟踪前连接到 SQL Server 的用户的所有活动。

18

Audit Server Starts and Stops

在修改 SQL Server 服务状态时发生。

20

Audit Login Failed

指示试图从客户端登录到 SQL Server 失败。

21

EventLog

指示已将事件记录到 Windows 应用程序日志中。

22

ErrorLog

指示已将错误事件记录到 SQL Server 错误日志中。

23

Lock:Released

指示已释放某个资源(如页)的锁。

24

Lock:Acquired

指示获取了某个资源(如数据页)的锁。

25

Lock:Deadlock

指示两个并发事务由于试图获得对方事务拥有的资源的不兼容锁而发生了相互死锁。

26

Lock:Cancel

指示已取消获取资源锁(例如,由于死锁)。

27

Lock:Timeout

指示由于其他事务持有所需资源的阻塞锁而使对资源(例如页)锁的请求超时。 超时由 @@LOCK_TIMEOUT 函数确定,并可用 SET LOCK_TIMEOUT 语句设置。

28

Degree of Parallelism Event(7.0 插入)

在执行 SELECT、INSERT 或 UPDATE 语句之前发生。

33

Exception

指示 SQL Server 中出现了异常。

34

SP:CacheMiss

指示未在过程缓存中找到某个存储过程。

35

SP:CacheInsert

指示某个项被插入到过程缓存中。

36

SP:CacheRemove

指示从过程缓存中删除了某个项。

37

SP:Recompile

指示已重新编译存储过程。

38

SP:CacheHit

指示在过程缓存中找到了存储过程。

40

SQL:StmtStarting

在启动了 Transact-SQL 语句时发生。

41

SQL:StmtCompleted

在完成了 Transact-SQL 语句时发生。

42

SP:Starting

指示启动了存储过程。

43

SP:Completed

指示完成了存储过程。

44

SP:StmtStarting

指示已开始执行存储过程中的 Transact-SQL 语句。

45

SP:StmtCompleted

指示存储过程中的 Transact-SQL 语句已执行完毕。

46

Object:Created

指示 CREATE INDEX、CREATE TABLE 和 CREATE DATABASE 这样的语句已创建了一个对象。

47

Object:Deleted

指示已在 DROP INDEX 和 DROP TABLE 这样的语句中删除了对象。

50

SQL Transaction

跟踪 Transact-SQL BEGIN、COMMIT、SAVE 和 ROLLBACK TRANSACTION 语句。

51

Scan:Started

指示启动了表或索引扫描

52

Scan:Stopped

指示停止了表或索引扫描。

53

CursorOpen

指示 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 语句中打开了一个游标。

54

TransactionLog

将事务写入事务日志时进行跟踪。

55

Hash Warning

指示未在缓冲分区进行的某一哈希操作(例如,哈希联接、哈希聚合、哈希 union 运算、哈希非重复)已恢复为替换计划。 发生此事件的原因可能是递归深度、数据扭曲、跟踪标记或位计数。

58

Auto Stats

指示发生了自动更新索引统计信息。

59

Lock:Deadlock Chain

为导致死锁的每个事件而生成。

60

Lock:Escalation

指示较细粒度的锁转换成了较粗粒度的锁(例如,页锁升级或转换为 TABLE 或 HoBT 锁)。

61

OLE DB Errors

指示发生了 OLE DB 错误。

67

Execution Warnings

指示在执行 SQL Server 语句或存储过程期间发生的任何警告。

68

Showplan Text (Unencoded)

显示所执行 Transact-SQL 语句的计划树。

69

Sort Warnings

指示不适合内存的排序操作。 不包括与创建索引有关的排序操作;只包括某查询内的排序操作(如 SELECT 语句中使用的 ORDER BY 子句)。

70

CursorPrepare

指示已准备了 ODBC、OLE DB 或 DB-Library 用于 Transact-SQL 语句的游标。

71

Prepare SQL

ODBC、OLE DB 或 DB-Library 已准备好了一个或多个要使用的 Transact-SQL 语句。

72

Exec Prepared SQL

ODBC、OLE DB 或 DB-Library 已执行了一个或多个准备好的 Transact-SQL 语句。

73

Unprepare SQL

ODBC、OLE DB 或 DB-Library 已撤消(删除)了一个或多个准备好的 Transact-SQL 语句。

74

CursorExecute

执行了先前由 ODBC、OLE DB 或 DB-Library 为 Transact-SQL 语句准备的游标。

75

CursorRecompile

由 ODBC 或 DB-Library 为 Transact-SQL 语句打开的游标已直接重新编译或由于架构更改而重新编译。

为 ANSI 和非 ANSI 游标触发。

76

CursorImplicitConversion

SQL Server 将 Transact-SQL 语句的游标从一种类型转换为另一种类型。

为 ANSI 和非 ANSI 游标触发。

77

CursorUnprepare

ODBC、OLE DB 或 DB-Library 撤消(删除)了准备好的 Transact-SQL 语句的游标。

78

CursorClose

关闭了先前由 ODBC、OLE DB 或 DB-Library 为 Transact-SQL 语句打开的游标。

79

Missing Column Statistics

可能曾经对优化器有用的列统计信息不可用。

80

Missing Join Predicate

正在执行没有联接谓词的查询。 这可能导致长时间运行查询。

81

Server Memory Change

SQL Server 内存的使用量已增加或减少了 1 MB 或最大服务器内存的 5%(两者中较大者)。

82-91

User Configurable (0-9)

用户定义的事件数据。

92

Data File Auto Grow

指示服务器已自动扩展了数据文件。

93

Log File Auto Grow

指示服务器已自动扩展了日志文件。

94

Data File Auto Shrink

指示服务器已自动收缩了数据文件。

95

Log File Auto Shrink

指示服务器已自动收缩了日志文件。

96

Showplan Text

显示来自查询优化器的 SQL 语句的查询计划树。 请注意,TextData 列不包含此事件的显示计划。

97

Showplan All

显示查询计划,并显示已执行的 SQL 语句的完整编译时详细信息。 请注意,TextData 列不包含此事件的显示计划。

98

Showplan Statistics Profile

显示查询计划,并显示已执行的 SQL 语句的完整运行时详细信息。 请注意,TextData 列不包含此事件的显示计划。

100

RPC Output Parameter

生成每个 RPC 的参数的输出值。

108

Audit Add Login to Server Role Event

在从固定服务器角色添加或删除登录时发生;针对 sp_addsrvrolemember 和 sp_dropsrvrolemember

112

Audit App Role Change Password Event

在更改应用程序角色的密码时发生。

113

Audit Statement Permission Event

在使用语句权限(如 CREATE TABLE)时发生。

114

Audit Schema Object Access Event

在成功或未成功使用了对象权限(如 SELECT)时发生。

115

Audit Backup/Restore Event

在发出 BACKUP 或 RESTORE 命令时发生。

116

Audit DBCC Event

在发出 DBCC 命令时发生。

117

Audit Change Audit Event

在修改审核跟踪时发生。

118

Audit Object Derived Permission Event

在发出 CREATE、ALTER 和 DROP 对象命令时发生。

119

OLEDB Call Event

为分布式查询和远程存储过程调用 OLE DB 访问接口时发生。

120

OLEDB QueryInterface Event

为分布式查询和远程存储过程调用 OLE DB QueryInterface 时发生。

121

OLEDB DataRead Event

对 OLE DB 访问接口调用数据请求时发生。

122

Showplan XML

在执行 SQL 语句时发生。 包括该事件可以标识 Showplan 运算符。 每个事件都存储在格式正确的 XML 文档中。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

123

SQL:FullTextQuery

执行全文查询时发生。

124

Broker:Conversation

报告 Service Broker 会话的进度。

125

Deprecation Announcement

使用将从 SQL Server 的未来版本中删除的功能时发生。

126

Deprecation Final Support

使用将从 SQL Server 的下一个主版本中删除的功能时发生。

127

Exchange Spill Event

在 tempdb 数据库临时写入并行查询计划中的通信缓冲区时发生。

128

Audit Database Management Event

创建、更改或删除数据库时发生。

129

Audit Database Object Management Event

对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时发生。

130

Audit Database Principal Management Event

创建、更改或删除数据库的主体(如用户)时发生。

131

Audit Schema Object Management Event

创建、更改或删除服务器对象时发生。

132

Audit Server Principal Impersonation Event

服务器范围中发生模拟(如 EXECUTE AS LOGIN)时发生。

133

Audit Database Principal Impersonation Event

数据库范围中发生模拟(如 EXECUTE AS USER 或 SETUSER)时发生。

134

Audit Server Object Take Ownership Event

服务器范围中的对象的所有者发生更改时发生。

135

Audit Database Object Take Ownership Event

数据库范围中的对象的所有者发生更改时发生。

136

Broker:Conversation Group

Service Broker 创建新的会话组或删除现有会话组时发生。

137

Blocked Process Report

进程被阻塞的时间超过了指定的时间时发生。 不包括系统进程或正在等待未发现死锁的资源的进程。 请使用 sp_configure 来配置生成报表时的阈值和频率。

138

Broker:Connection

报告 Service Broker 管理的传输连接的状态。

139

Broker:Forwarded Message Sent

Service Broker 转发消息时发生。

140

Broker:Forwarded Message Dropped

Service Broker 删除用于转发的消息时发生。

141

Broker:Message Classify

Service Broker 确定消息的路由时发生。

142

Broker:Transmission

指示在 Service Broker 传输层中发生了错误。 错误号和状态值指示了错误源。

143

Broker:Queue Disabled

指示检测到有害消息,这是由于在 Service Broker 队列中有五个连续的事务回滚。 该事件包含数据库 ID 和包含有害消息的队列的队列 ID。

146

Showplan XML Statistics Profile

在执行 SQL 语句时发生。 标识 Showplan 运算符,并显示完整的编译时数据。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

148

Deadlock Graph

取消获取锁的尝试时发生,这是因为该尝试是死锁的一部分,并且被选为死锁牺牲品。 提供死锁的 XML 说明。

149

Broker:Remote Message Acknowledgement

Service Broker 发送或收到消息确认时发生。

150

Trace File Close

跟踪文件在回滚期间关闭时发生。

152

Audit Change Database Owner

使用 ALTER AUTHORIZATION 更改数据库的所有者,并且检查执行该操作的权限时发生。

153

Audit Schema Object Take Ownership Event

使用 ALTER AUTHORIZATION 来将所有者分配给对象,并且检查执行该操作的权限时发生。

155

FT:Crawl Started

全文爬网(填充)开始时发生。 用于检查工作线程任务是否拾取了爬网请求。

156

FT:Crawl Stopped

全文爬网(填充)停止时发生。 爬网成功完成或发生错误时停止。

157

FT:Crawl Aborted

在全文爬网过程中遇到异常时发生。 通常导致全文爬网停止。

158

Audit Broker Conversation

报告与 Service Broker 对话安全性相关的审核消息。

159

Audit Broker Login

报告与 Service Broker 传输安全性相关的审核消息。

160

Broker:Message Undeliverable

Service Broker 无法保留收到的消息时发生,该消息应当已传递给某个服务。

161

Broker:Corrupted Message

Service Broker 收到损坏的消息时发生。

162

User Error Message

显示出现错误或异常时用户看到的错误消息。

163

Broker:Activation

队列监视器启动激活存储过程时,发送 QUEUE_ACTIVATION 通知时,或者队列监视器启动的激活存储过程退出时发生。

164

Object:Altered

数据库对象更改时发生。

165

Performance statistics

将经过编译的查询计划第一次缓存、重新编译或从计划缓存中删除时发生。

166

SQL:StmtRecompile

发生语句级别的重新编译时发生。

167

Database Mirroring State Change

镜像数据库的状态更改时发生。

168

Showplan XML For Query Compile

编译 SQL 语句时发生。 显示完整的编译时数据。 请注意,此事件的 Binary 列包含已编码的显示计划。 使用 SQL Server Profiler 可打开跟踪并查看显示计划。

169

Showplan All For Query Compile

编译 SQL 语句时发生。 显示完整的编译时数据。 用于标识 Showplan 运算符。

170

Audit Server Scope GDR Event

指示在服务器范围中发生了权限的授予、拒绝或撤消事件(如创建登录)。

171

Audit Server Object GDR Event

指示发生了对架构对象(如表或函数)的授予、拒绝或撤消事件。

172

Audit Database Object GDR Event

指示发生了对数据库对象(如程序集和架构)的授予、拒绝或撤消事件。

173

Audit Server Operation Event

使用了安全审核操作(如使用了更改设置、资源、外部访问或授权)时发生。

175

Audit Server Alter Trace Event

检查语句的 ALTER TRACE 权限时发生。

176

Audit Server Object Management Event

创建、更改或删除服务器对象时发生。

177

Audit Server Principal Management Event

创建、更改或删除了服务器主体时发生。

178

Audit Database Operation Event

发生数据库操作(如检查或订阅查询通知)时发生。

180

Audit Database Object Access Event

访问数据库对象(如架构)时发生。

181

TM: Begin Tran starting

BEGIN TRANSACTION 请求开始时发生。

182

TM: Begin Tran completed

BEGIN TRANSACTION 请求完成时发生。

183

TM: Promote Tran starting

PROMOTE TRANSACTION 请求开始时发生。

184

TM: Promote Tran completed

PROMOTE TRANSACTION 请求完成时发生。

185

TM: Commit Tran starting

COMMIT TRANSACTION 请求开始时发生。

186

TM: Commit Tran completed

COMMIT TRANSACTION 请求完成时发生。

187

TM: Rollback Tran starting

ROLLBACK TRANSACTION 请求开始时发生。

188

TM: Rollback Tran completed

ROLLBACK TRANSACTION 请求完成时发生。

189

Lock:Timeout (timeout > 0)

对资源(如页)的锁请求超时时发生。

190

Progress Report: Online Index Operation

报告生成进程正在运行时,联机索引生成操作的进度。

191

TM: Save Tran starting

SAVE TRANSACTION 请求开始时发生。

192

TM: Save Tran completed

SAVE TRANSACTION 请求完成时发生。

193

Background Job Error

后台作业不正常终止时发生。

194

OLEDB Provider Information

分布式查询运行并收集对应于提供程序连接的信息时发生。

195

Mount Tape

收到磁带装入请求时发生。

196

Assembly Load

发生加载 CLR 程序集的请求时发生。

198

XQuery Static Type

执行 XQuery 表达式时发生。 此事件类提供静态类型的 XQuery 表达式。

199

QN: subscription

无法订阅查询注册时发生。 TextData 列包含事件的有关信息。

200

QN: parameter table

有关活动订阅的信息存储在内部参数表中。 在创建或删除参数表时发生该事件类。 通常,重新启动数据库时将创建或删除这些表。 TextData 列包含事件的有关信息。

201

QN: template

查询模板代表订阅查询的类。 通常,除参数值以外,相同类中的查询是相同的。 当新的订阅请求针对已存在的类 (Match)、新类 (Create) 或 Drop 类(指示清除没有活动订阅的查询类的模板)时,发生此事件类。 TextData 列包含事件的有关信息。

202

QN: dynamics

跟踪查询通知的内部活动。 TextData 列包含事件的有关信息。

213

Database Suspect Data Page

指示何时将某页添加到 msdb 的 suspect_pages 表。

214

CPU threshold exceeded

指示资源调控器检测到查询超过 CPU 阈值 (REQUEST_MAX_CPU_TIME_SEC) 的时间。

215

指示 LOGON 触发器或资源调控器分类器函数开始执行的时间。

指示 LOGON 触发器或资源调控器分类器函数开始执行的时间。

216

PreConnect:Completed

指示 LOGON 触发器或资源调控器分类器函数完成执行的时间。

217

Plan Guide Successful

指示 SQL Server 已成功为计划指南中包含的查询或批处理生成执行计划。

218

Plan Guide Unsuccessful

指示 SQL Server 无法为包含计划指南的查询或批处理生成执行计划。 SQL Server 尝试在不应用计划指南的情况下为此查询或批处理生成执行计划。 无效的计划指南可能是导致此问题的原因。 您可以通过使用 sys.fn_validate_plan_guide 系统函数验证该计划指南。

@traceid 要修改的跟踪的 ID号

根据地点SQL Server自带的跟踪音讯有部分局限性,SQL
Server为大家提供了自定义跟踪的接口,大家得以本人定义跟踪,丰盛扩张方法。

--获取跟踪文件中前100行执行内容
SELECT TOP 100
 gt.[HostName] 
,gt.[ServerName] 
,gt.[DatabaseName] 
,gt.[SPID] 
,gt.[ObjectName] 
,gt.[objecttype] [ObjectTypeID] 
,sv.[subclass_name] [ObjectType] 
,e.[category_id] [CategoryID] 
,c.[Name] [Category] 
,gt.[EventClass] [EventID] 
,e.[Name] [EventName] 
,gt.[LoginName] 
,gt.[ApplicationName] 
,gt.[StartTime] 
,gt.[TextData] 
FROM fn_trace_gettable('E:\dataDefaultFileManger\MSSQL10.MSSQLSERVER\MSSQL\Log\log_1267.trc', DEFAULT) gt 
LEFT JOIN sys.trace_subclass_values sv 
ON gt.[eventclass] = sv.[trace_event_id] AND sv.[subclass_value] = gt.[objecttype] 
INNER JOIN sys.trace_events e 
ON gt.[eventclass] = e.[trace_event_id] 
INNER JOIN sys.trace_categories c 
ON e.[category_id] = c.[category_id] 
WHERE gt.[spid] > 50 AND --50以内的spid为系统使用
    gt.[DatabaseName] = 'master' AND --根据DatabaseName过滤
    gt.[ObjectName] = 'fn_trace_getinfo' AND --根据objectname过滤
    e.[category_id]  = 5 AND --category 5表示对象,8表示安全
    e.[trace_event_id] = 46 
    --trace_event_id 
    --46表示Create对象(Object:Created),
    --47表示Drop对象(Object:Deleted),
    --93表示日志文件自动增长(Log File Auto Grow),
    --164表示Alter对象(Object:Altered),
    --20表示错误日志(Audit Login Failed)
ORDER BY [StartTime] DESC

一提到跟踪俩字,很四个人想到警察匪徒片中的场景,同样在我们的SQL
Server数据库中“跟踪”也是无处不在的,即便大家采纳好了跟踪技术,就足以本着少数特定的景观做定向分析,找出富饶的凭证来破案。

图片 60

黑匣子作为飞机出现事故后的追踪利器,在微软的SQL
Server这几个数据库中暗中同意也给装上了此引擎,然则没有打开,此功用大概扶持大家诊断间歇性的服务器崩溃。它比大家地点介绍的暗中同意开启的跟踪盯梢的新闻更全,跟踪更大学一年级部分。其剧情涵盖了:“SP:运营”、“SQL:批处理运转”、分外和专注等事件

其多少个:表示滚动文件的大大小小(单位MB),当到达那么些值就会创设新的滚动文件

图片 61

--从系统中移除跟踪
exec sp_trace_setstatus @TraceID,2
select * from sys.configurations where configuration_id = 1568

图片 62

 

三.死锁案例(二〇一六年十二月22十九日晚补充)

由此地点的剧本,大家已经创办了一个新的跟踪(trace),不过那一个跟踪状态为0,相当于说还不曾运营,上面大家的手续正是要为这一个跟踪添加事件(event)

依照上边SQL Server自带的跟踪新闻有局地局限性,SQL
Server为我们提供了自定义跟踪的接口,大家得以自个儿定义跟踪,充足扩张方法。

里面最器重的正是时间ID,那么些是SQL
Server为我们提供的某些列的码表时间值,具体值能够参照联机丛书 sp_trace_setevent
(Transact-SQL)
.aspx)

大家也得以经过上边包车型地铁讲话找到这么些跟踪的记录

① 、那伍个文件是滚动更新的,而且每一个文件暗中同意最大都为20MB,并且没有提供更改的接口,所以当文件填充完未来就会去除掉,所以会找不到太久从前的剧情;

@on 表示事件意况

咱俩定义追踪全体语句批量操作的追踪,从下面表大家得以寻找到为12,13

请关心本篇小说,让大家一同利用数据库的“跟踪”(Trace)走进数据库背后,查看其内部原理。

select * from sys.traces

图片 63

                  4代表一旦不能够将跟踪写入文件,不管什么原因造成,SQL
Server则会倒闭。这几个能够应用此选项,追踪难点

图片 64

      http://www.cnblogs.com/spring\_wang/p/4233146.html

二 、本人默许的跟踪,只是提供一些人命关天新闻的寻踪,当中包罗:auditing
events,database events,error events,full text events,object
creation,object deletion,object
alteration,想要找到任何更详细的内容,此措施恐怕无能为力;

 

select * from ::fn_trace_getinfo(0)

 

图片 65

图片 66

exec sp_trace_setevent 2,12,1,1
exec sp_trace_setevent 2,13,1,1

找到该目录,大家查阅下该公文:

转载http://www.cnblogs.com/zhijianliutang/p/4113911.html

留下评论

网站地图xml地图