Exibir instruções de exclusão no log de transações

12

É possível visualizar deleteinstruções que ocorreram recentemente no log de transações?

Neil Knight
fonte
As instruções em si não são registradas no log de transações. Em que modelo de recuperação está o seu banco de dados? Esta resposta pode ser útil
Martin Smith

Respostas:

11

você não encontrará os scripts exatos que foram executados no sql. (no log de transações)

Um log de transações é um arquivo que contém informações sobre todas as alterações feitas no banco de dados. Isso inclui modificações de dados (transações), modificações no banco de dados e eventos de backup / restauração.

O objetivo principal do log de transações é fornecer um método para restaurar um banco de dados em um momento específico, quando necessário. Isso pode incluir a reversão de transações para um determinado momento ou a reversão de transações de uma restauração de backup completa.

para saber mais sobre o log de transações http://www.sqlservercentral.com/articles/Design+and+Theory/63350/

aqui está um script para mostrar consultas de exclusão executadas recentes

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where dest.TEXT like '%Delete%from%'
ORDER BY deqs.last_execution_time DESC
AmmarR
fonte
FYI: FROMé uma palavra-chave opcional em uma DELETEdeclaração, portanto, não a incluiria no predicado correspondente aqui.
Jon Seigel
É verdade que a instrução From in delete é opcional, mantive-a apenas para limitar os resultados da minha consulta. mas sim, você está certo
AmmarR
Note, para instâncias maiúsculas e minúsculas SQL Server, o código acima falta vontade deletee DELETE, etc. Você pode querer fazer o onde cláusula case-insensitive, por exemplo: WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
Max Vernon
11

Você pode visualizar as linhas individuais que foram excluídas procurando operações LOP_DELETE_ROWS ainda no log:

select * from fn_dblog(NULL, NULL) 
where Operation = 'LOP_DELETE_ROWS'

Se o log foi reciclado (no modelo de recuperação simples) ou truncado pelo backup (no modelo de recuperação total ou em massa), você poderá ver apenas as operações de log ainda disponíveis no log.

Compreender as operações de log é bastante complexo, é necessário estar ciente de coisas como operações de desfazer ou compensar para entender alguns padrões de log que você pode encontrar, mas DELETEs confirmados diretos são bastante fáceis de entender.

Remus Rusanu
fonte