【监控笔记】【1.2】监控事件系列——SQL Trace

【1】服务器端跟踪(Server Side Trace)

【1.1】概念与使用

SQL跟踪任务:https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace?view=sql-server-2017

  1. 使用sp_trace_create创建跟踪。

  2. 使用sp_trace_setevent添加事件。

  3. (可选)使用sp_trace_setfilter设置过滤器。

  4. 使用sp_trace_setstatus启动跟踪。

  5. 使用sp_trace_setstatus停止跟踪。

  6. 使用sp_trace_setstatus关闭跟踪。

sp_trace_create(Transact-SQL)
sp_trace_setevent(Transact-SQL)
sp_trace_setfilter(Transact-SQL)
sp_trace_setstatus(Transact-SQL)

【1.2】默认跟踪

  【1.2.1】查看默认跟踪是否在运行

      select * from sys.configurations where configuration_id = 1568

  【1.2.2】如何开启与关闭跟踪,查看 跟踪?  

--开启默认跟踪
sp_configure 'show advanced options',1 go reconfigure; go sp_configure 'default trace enabled',1 go reconfigure; go

--关闭默认跟踪,
default trace enabled 默认为1,为启动默认跟踪。0时关闭耿总
exec sp_configure 'default trace enabled',0;
reconfigure with override;
go


select * from fn_trace_getinfo(default);  
--查看所有跟踪信息,会列出所有保存到文件的跟踪
select * from fn_trace_gettable('e:/DbLog/deadlockdetect.trc',1)   --查看跟踪文件: T-SQL方式

-- 默认跟踪可以捕获到如下事件
select * from sys.trace_events   --查看跟踪事件
select * from sys.trace_categories   --查看跟踪类别
select * from sys.trace_subclass_values   --查看跟踪子类
 

  【1.1.3】如何查看所有跟踪?

  select * from sys.traces

    

 

  

       

 【2.2】服务端跟踪死锁案例

复制代码
--【2.2.1】开启设置跟踪
use db_tank go --创建跟踪文件返回值 declare @rc int --创建一个跟踪句柄 declare @TraceID int --创建跟踪文件路径 declare @TraceFilePath nvarchar(500) set @TraceFilePath=N'D:\DBA_TOOLS\db_deadLock_log' --跟踪文件的大小 declare @maxfilesize bigint set @maxfilesize=200 --设置停止的时间 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) declare @on bit set @on = 1 --下述语句中的148指的是locks:deadlock graph事件(参见sys.trace_events),12指的是spid列(参见sys.trace_columns) exec sp_trace_setevent @TraceID, 148, 12, @on exec sp_trace_setevent @TraceID, 148, 11, @on exec sp_trace_setevent @TraceID, 148, 4, @on exec sp_trace_setevent @TraceID, 148, 14, @on exec sp_trace_setevent @TraceID, 148, 26, @on exec sp_trace_setevent @TraceID, 148, 64, @on exec sp_trace_setevent @TraceID, 148, 1, @on -- 启动跟踪 exec sp_trace_setstatus @TraceID, 1 -- 记录下跟踪ID,以备后面使用 select TraceID = @TraceID goto finish error: select ErrorCode=@rc finish: go --【2.2.2】启停与重启跟踪 -----默认重启实例后,跟踪会取消,所以写一个SP做实例启动执行 use master go create proc StartBlackBoxTrace as begin 【2.2.1】中代码 END GO --将该存储过程设置为SQL Server服务启动时自动启动 EXEC sp_procoption 'StartBlackBoxTrace','STARTUP','ON' print 'ok' GO --查看 select * from sys.traces --删除,exec sp_trace_setstatus @TraceID, 1 --0为停止跟踪,1为启用跟踪,2为删除跟踪,
--下面的2,为sys.traces中查出来的TraceId
exec sp_trace_setstatus 2, 0
exec sp_trace_setstatus 2, 2

猜你喜欢

转载自www.cnblogs.com/gered/p/10880697.html