如何确定谁在 SQL Server 2005(以及何时)中删除了数据库?

Chi*_*nho 3 sql-server-2005

有没有办法找出谁在 SQL Server 2005 中删除了数据库以及删除它的时间/日期?

Aar*_*and 8

如果它足够新,它可能仍在默认跟踪中。基本假设是 DROP 事件将是为此数据库记录的最后一个事件。因此,如果有人删除了数据库“splunge”,您应该能够以这种方式捕获它(再次取决于它发生的时间):

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 TOP 1 LoginName, HostName, ApplicationName, StartTime, TextData
  FROM sys.fn_trace_gettable( @FileName, DEFAULT ) AS gt  
  WHERE EventClass = 47 AND DatabaseName = 'splunge'
  ORDER BY StartTime DESC;
Run Code Online (Sandbox Code Playgroud)