SQLServer 维护脚本分享(01)谁对数据库对象进行了DDL操作?

本文详细介绍了如何在 SQL Server 中配置跟踪并获取特定对象的 DDL 操作日志,通过查看跟踪记录来分析和监控数据库活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--先确定是否开启了默认跟踪
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'default trace enabled'


--	查看事件类型描述,确定事件id(trace_event_id)
SELECT tc.name,te.trace_event_id,te.name,tc.type
,CASE tc.type WHEN 0 THEN '普通' WHEN 1 THEN '连接' WHEN 2 THEN '错误' END AS [type]
FROM sys.trace_categories tc 
INNER JOIN sys.trace_events te on te.category_id = tc.category_id
ORDER BY tc.name,trace_event_id



sys.trace_events 目录视图包含所有 SQL 跟踪事件的列表,可以自行选择查看所需信息。

如 我要查看谁对对象进行了ddl操作。

--	查看跟踪记录,根据事件id(trace_event_id)
DECLARE @path NVARCHAR(1000)  
SELECT @path = Substring(PATH, 1, Len(PATH) - Charindex('\', Reverse(PATH))) +'\log.trc'  
FROM sys.traces WHERE  id = 1  
SELECT DatabaseID,NTDomainName,NTUserName,HostName, ClientProcessID,ApplicationName
,LoginName,StartTime,DatabaseName,ObjectName,EventClass,SessionLoginName
FROM ::fn_trace_gettable(@path, 0)  
WHERE EventClass in(46,47,164) and DatabaseName<>'tempdb' and ObjectName is not null




sys.traces: https://msdn.microsoft.com/zh-cn/library/ms178579.aspx


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值