Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Identifizieren Sie die Aktion, die alle Zeilen in einer Tabelle löscht

Sie können Erweitertes Ereignis verwenden s, um Ihr System zu überwachen.Hier ein einfacher Screenshot, wo Sie sind.

Eine einfache Richtlinie kann auf Löschen überwachen und abschneiden Anweisungen. Wenn diese Ereignisse ausgelöst werden, werden Details in die Datei geschrieben.

Hier ein Bildschirm mit Details (Sie können das Skript so konfigurieren, dass mehr Daten gesammelt werden), die für die Löschanweisung gesammelt wurden.

Hier das verwendete Skript, ändern Sie den Pfad der Ausgabedatei

CREATE EVENT SESSION [CheckDelete] ON SERVER 
ADD EVENT sqlserver.sql_statement_completed(SET collect_statement=(1)
    ACTION(sqlserver.client_connection_id,sqlserver.client_hostname)
    WHERE ([sqlserver].[like_i_sql_unicode_string]([statement],N'%delete%') OR [sqlserver].[like_i_sql_unicode_string]([statement],N'%truncate%'))) 
ADD TARGET package0.event_file(SET filename=N'C:\temp\CheckDelete.xel',max_file_size=(50))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO