总是需要找到详细信息,无论是故意还是错误地有人在以下任何SQL Server数据库对象上执行DROP / DELETE命令。
Q值。是否有TSQL可以找到执行DELETE / DROP的数据库用户?
Q值。用户需要哪些权限才能找到这些详细信息?
答案 0 :(得分:1)
解决方案2: 此查询为数据库提供了大量有用信息(根据需要应用过滤器):
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;