我正在尝试找到最后修改SQL Server中特定表的用户。
sys.dm_db_index_usage_stats
提供有关表的最后修改日期的信息,但我正在寻找最后修改日期。有没有办法弄清楚哪个登录最后修改了特定的表?
答案 0 :(得分:2)
我认为您必须在SQL Server中启用内置审核(默认情况下不启用),或者编写自己的审核方法。
如果这是针对已经发生的事情,那么我认为你可能会失败。
答案 1 :(得分:1)
试一试,看看是否有帮助:
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)
ORDER BY StartTime DESC;
答案 2 :(得分:0)
感谢大家查看我的问题并提供建议。我在触发器中使用了以下脚本来获取last_modified_by。
DECLARE @login_name NVARCHAR(200)
SELECT @login_name = loginame
FROM sys.sysprocesses
WHERE spid = @@SPID