Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Identifier l'action qui supprime toutes les lignes d'une table

Vous pouvez utiliser Événement étendu s pour surveiller votre système.Voici une simple capture d'écran où sont.

Une règle simple peut surveiller la suppression et tronquer déclarations. Lorsque ces événements sont déclenchés, les détails sont écrits dans le fichier.

Voici un écran avec des détails (vous pouvez configurer le script pour collecter plus de données) collectés pour la déclaration de suppression.

Voici le script utilisé, modifiez le chemin du fichier de sortie

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