0
總是需要找出詳細信息,有意或有人在以下任何SQL Server數據庫對象上執行DROP/DELETE命令。如何確定誰在Sql Server數據庫對象上執行DROP/DELETE?
- 跌落 - 表從數據庫
- 下跌 - 從數據庫
- 刪除存儲過程 - 從數據庫表
Q.行是否有可用的TSQL找誰執行數據庫用戶DELETE/DROP?
Q.用戶需要什麼樣的權限才能找到這些詳細信息?
總是需要找出詳細信息,有意或有人在以下任何SQL Server數據庫對象上執行DROP/DELETE命令。如何確定誰在Sql Server數據庫對象上執行DROP/DELETE?
Q.行是否有可用的TSQL找誰執行數據庫用戶DELETE/DROP?
Q.用戶需要什麼樣的權限才能找到這些詳細信息?
解決方案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;
DDL語句可以在找到默認跟蹤一小段時間。如果你想要更多的控制,你需要創建數據庫觸發器。行刪除沒有被跟蹤。爲此,您需要創建一個刪除觸發器。這個問題很可能因爲過於寬泛而關閉。 –
好,這裏的目的是跟蹤數據庫對象的這種操作,比如說:有人丟棄了一個存儲過程,我們想知道是誰做的。 –
你可以看一下[SQL Server Audit](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine),但是這個在審計到位之前,不會給你提供信息。另外請記住,指責別人不會有幫助。請注意適當的備份策略和災難恢復計劃,並確保服務器/數據庫的權限不會太寬。 – Pred