如何确定谁在Sql Server数据库对象上执行DROP / DELETE?

时间:2017-06-14 13:25:03

标签: sql-server

总是需要找到详细信息,无论是故意还是错误地有人在以下任何SQL Server数据库对象上执行DROP / DELETE命令。

  1. DROPPED - 数据库中的表格
  2. 删除 - 数据库中的存储过程
  3. DELETED - 数据库表中的行
  4. Q值。是否有TSQL可以找到执行DELETE / DROP的数据库用户?

    Q值。用户需要哪些权限才能找到这些详细信息?

1 个答案:

答案 0 :(得分:1)

你检查过这个吗? 右键单击数据库。 转到如图所示: sql server

解决方案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;