![找出谁修改了 SQL Server 上的存储过程?](https://linux22.com/image/545998/%E6%89%BE%E5%87%BA%E8%B0%81%E4%BF%AE%E6%94%B9%E4%BA%86%20SQL%20Server%20%E4%B8%8A%E7%9A%84%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%EF%BC%9F.png)
看起来有人登录并修改了我们的 SQL Server 数据库上的存储过程。有没有办法找出执行此操作的人的凭据?
答案1
您可以查看默认跟踪并轻松找出答案。尝试 Jonathan Kehayias 的示例。
这是为了作为示例显示,您需要查看 ALTER OBJECT 事件类型。
编辑:
代码由 Jonathan Kehayias 提供。
DECLARE @filename VARCHAR(255)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT gt.HostName,
gt.ApplicationName,
gt.NTUserName,
gt.NTDomainName,
gt.LoginName,
gt.SPID,
gt.EventClass,
te.Name AS EventName,
gt.EventSubClass,
gt.TEXTData,
gt.StartTime,
gt.EndTime,
gt.ObjectName,
gt.DatabaseName,
gt.FileName,
gt.IsSystem
FROM [fn_trace_gettable](@filename, DEFAULT) gt
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id
WHERE EventClass in (164) --AND gt.EventSubClass = 2
ORDER BY StartTime DESC;