SQL跟踪事件开启与关闭

发布于:2025-03-10 ⋅ 阅读:(11) ⋅ 点赞:(0)

"-- 定义参数  保证指定目录存在
declare @rc int 
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 1024;

-- 初始化跟踪  
exec @rc = sp_trace_create @TraceID output, 0, N'D:\SQLScript\trace_error_8623', @maxfilesize, NULL
--此处的D:\SQLScript\trace_error_8623是文件名(可自行修改),SQL会自动在后面加上.trc的扩展名  
if (@rc != 0) goto error 

-- 设置跟踪事件  
declare @on bit; 
set @on = 1;
--trace_event_id=13  SQL:BatchStarting   trace_event_id=22 ErrorLog
exec sp_trace_setevent @TraceID, 13, 1, @on; 
exec sp_trace_setevent @TraceID, 13, 3, @on;
exec sp_trace_setevent @TraceID, 13, 6, @on; 
exec sp_trace_setevent @TraceID, 13, 7, @on;
exec sp_trace_setevent @TraceID, 13, 8, @on;
exec sp_trace_setevent @TraceID, 13, 11, @on; 
exec sp_trace_setevent @TraceID, 13, 12, @on;
exec sp_trace_setevent @TraceID, 13, 14, @on;
exec sp_trace_setevent @TraceID, 13, 15, @on;
exec sp_trace_setevent @TraceID, 13, 35, @on;
exec sp_trace_setevent @TraceID, 13, 63, @on; 
exec sp_trace_setevent @TraceID, 22, 1, @on;
exec sp_trace_setevent @TraceID, 22, 3, @on; 
exec sp_trace_setevent @TraceID, 22, 6, @on; 
exec sp_trace_setevent @TraceID, 22, 7, @on; 
exec sp_trace_setevent @TraceID, 22, 8, @on; 
exec sp_trace_setevent @TraceID, 22, 12, @on;
exec sp_trace_setevent @TraceID, 22, 11, @on; 
exec sp_trace_setevent @TraceID, 22, 14, @on;
exec sp_trace_setevent @TraceID, 22, 14, @on;
exec sp_trace_setevent @TraceID, 22, 35, @on; 
exec sp_trace_setevent @TraceID, 22, 63, @on; 
-- 启动跟踪  
exec sp_trace_setstatus @TraceID, 1; 
-- 记录下跟踪ID,以备后面使用  
select TraceID = @TraceID;
goto finish;
error:
select ErrorCode=@rc; 
finish:
GO

-- 替换成你实际获取的 TraceID(例如 2)  关闭跟踪
DECLARE @TraceID INT = 2;
-- 先停止跟踪(状态 0)
EXEC sp_trace_setstatus @TraceID, 0;
-- 再关闭并删除跟踪定义(状态 2)
EXEC sp_trace_setstatus @TraceID, 2;


--以下是查询日志
SELECT StartTime,EndTime,TextData, ApplicationName,SPID,Duration,LoginName
FROM ::fn_trace_gettable(N'D:\SQLScript\trace_error_8623.trc',DEFAULT)
WHERE TextData like '%错误%'
ORDER BY StartTime
SELECT StartTime,EndTime,TextData, ApplicationName,SPID,Duration,LoginName
FROM ::fn_trace_gettable(N'D:\SQLScript\trace_error_8623.trc',DEFAULT)
WHERE  spid in(62,184,113)
ORDER BY StartTime
 spid=113