Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Идентифицирайте действието, което изтрива всички редове в таблица

Можете да използвате Разширено събитие s за наблюдение на вашата система. Ето една проста екранна снимка, където са.

Проста политика може да следи за изтриване и отрязване изявления. Когато се появят тези събития, подробностите се записват във файл.

Ето екран с подробности (можете да конфигурирате скрипта да събира повече данни), събрани за изявление за изтриване.

Тук използваният скрипт променя пътя на изходния файл

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвам низова променлива в sql израз

  2. SQL Server ARITHABORT

  3. Проверете дали дадена таблица има колона TIMESTAMP в SQL Server с OBJECTPROPERTY()

  4. Композитен първичен ключ + външен ключ

  5. Префиксът NVarchar причинява избор на грешен индекс