Job定时自动执行SQL日志记录脚本

数据库类型

SQL Server

用途

用于自动记录SQL当天运行的SQL语句及相关事务,对于DB及业务系统维护人员来说还是很有用的

可解决相关问题

1、当业务数据表中一条重要数据误删之后,要找回该条数据的插入记录用于恢复数据

2、查询数据表中数据被谁修改、删除

3、用于数据库遇到查询耗时、事务堵塞、CPU内存消耗等问题分析

相关函数的解释:

sp_trace_setevent (Transact-SQL) - SQL Server | Microsoft Learn

sp_trace_setstatus (Transact-SQL) - SQL Server | Microsoft Learn

以下是存储过程sql内容

注:存储过程创建完成之后,配置JOB定时执行就行,当天的记录会归在同一个日志文件中

产生的日志文件示例:duration202408260000.trc,用SQL Server Profiler工具打开

sql 复制代码
--exec dbo.TraceEis          
          
CREATE proc TraceEis              
/*目的:自动开启追踪日志*/              
as              
begin              
 declare @rc int              
 declare @TraceID int              
 declare @maxfilesize bigint              
 declare @DateTime datetime              
              
 set @DateTime = DATEADD(MI,-1,dateadd(day,1,getdate()))--定义追踪文件结束的记录日期            
 set @maxfilesize = 4096  --定义跟踪文件的大小,单位是MB        
               
 declare @path nvarchar(50)              
 set @path=N'D:\SQLLog\duration'+'20'+convert(varchar(10),getdate(),12)+replace(convert(varchar(5),getdate(),108),':','')          
              
 exec @rc = sp_trace_create @TraceID output, 0, @path, @maxfilesize, @DateTime               
 if (@rc != 0) goto error              
          
/*          
0 :没有错误。          
1 :未知错误。          
10:无效选项。 指定的选项不兼容时返回此代码。          
12:文件未创建。          
13:内存不足。 在没有足够内存执行指定的操作时返回此代码。          
14:无效停止时间。 在指定的停止时间已发生时返回此代码。          
15:参数无效。 在用户已提供不兼容的参数时返回此代码。          
*/          
              
 declare @on bit              
 set @on = 1              
           
 --在完成了远程过程调用 (RPC) 时发生          
 exec sp_trace_setevent @TraceID, 10, 1, @on    --TextData          
 exec sp_trace_setevent @TraceID, 10, 8, @on    --HostName          
 exec sp_trace_setevent @TraceID, 10, 10, @on   --ApplicationName          
 exec sp_trace_setevent @TraceID, 10, 11, @on   --LoginName          
 exec sp_trace_setevent @TraceID, 10, 12, @on   --SPID           
 exec sp_trace_setevent @TraceID, 10, 13, @on   --Duration           
 exec sp_trace_setevent @TraceID, 10, 14, @on   --StartTime           
 exec sp_trace_setevent @TraceID, 10, 16, @on --read          
 exec sp_trace_setevent @TraceID, 10, 17, @on --write          
 exec sp_trace_setevent @TraceID, 10, 18, @on --CPU          
          
 --在完成了 Transact-SQL 批处理时发生           
 exec sp_trace_setevent @TraceID, 12, 1, @on              
 exec sp_trace_setevent @TraceID, 12, 8, @on             
 exec sp_trace_setevent @TraceID, 12, 10, @on          
 exec sp_trace_setevent @TraceID, 12, 14, @on              
 exec sp_trace_setevent @TraceID, 12, 11, @on            
 exec sp_trace_setevent @TraceID, 12, 12, @on              
 exec sp_trace_setevent @TraceID, 12, 13, @on              
 exec sp_trace_setevent @TraceID, 12, 16, @on          
 exec sp_trace_setevent @TraceID, 12, 17, @on          
 exec sp_trace_setevent @TraceID, 12, 18, @on           
              
 -- Set the Filters              
 declare @intfilter int              
 declare @bigintfilter bigint              
              
 -- 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:               
               
end
相关推荐
清水白石00819 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
资生算法程序员_畅想家_剑魔19 小时前
Mysql常见报错解决分享-01-Invalid escape character in string.
数据库·mysql
PyHaVolask19 小时前
SQL注入漏洞原理
数据库·sql
ptc学习者20 小时前
黑格尔时代后崩解的辩证法
数据库
代码游侠20 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
!chen20 小时前
EF Core自定义映射PostgreSQL原生函数
数据库·postgresql
霖霖总总20 小时前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
马克学长20 小时前
SSM校园食堂订餐系统531p9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 校园食堂订餐系统
alonewolf_9920 小时前
深入剖析MySQL索引底层:B+树、联合索引与跳跃扫描原理全解
数据库·b树·mysql
oMcLin20 小时前
如何在 AlmaLinux 9 上配置并优化 Redis 集群,支持高并发的实时数据缓存与快速查询?
数据库·redis·缓存