sql >> Base de Datos >  >> RDS >> Sqlserver

Identificar la acción que está eliminando todas las filas de una tabla

Puedes usar Evento extendido s para monitorear su sistema. Aquí una simple captura de pantalla donde están.

Una política simple puede monitorear eliminar y truncar declaraciones. Cuando se generan estos eventos, los detalles se escriben en el archivo.

Aquí se muestra una pantalla con detalles (puede configurar el script para recopilar más datos) recopilados para la declaración de eliminación.

Aquí el script utilizado, modifique la ruta del archivo de salida

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