如何找到最后修改SQL Server中的表的人?

时间:2015-04-23 21:19:34

标签: sql sql-server

我正在尝试找到最后修改SQL Server中特定表的用户。 sys.dm_db_index_usage_stats提供有关表的最后修改日期的信息,但我正在寻找最后修改日期。有没有办法弄清楚哪个登录最后修改了特定的表?

3 个答案:

答案 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