답변:
SQL에서 실행 된 정확한 스크립트를 찾을 수 없습니다 (트랜잭션 로그에서)
트랜잭션 로그는 데이터베이스의 모든 변경 사항에 대한 정보가 포함 된 파일입니다. 여기에는 데이터 수정 (트랜잭션), 데이터베이스 수정 및 백업 / 복원 이벤트가 포함됩니다.
트랜잭션 로그의 주요 목적은 필요할 때 데이터베이스를 특정 시점으로 복원 할 수있는 방법을 제공하는 것입니다. 여기에는 트랜잭션을 특정 시간으로 롤백하거나 전체 백업 복원에서 트랜잭션을 롤 포워드하는 것이 포함될 수 있습니다.
트랜잭션 로그에 대한 자세한 내용은 http://www.sqlservercentral.com/articles/Design+and+Theory/63350/
다음은 최근 실행 된 삭제 쿼리를 보여주는 스크립트입니다.
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
FROM
의 선택적 키워드 DELETE
이므로 일치하는 술어에 포함시키지 않습니다.
delete
되고 DELETE
등이 발생합니다. where 절을 대 / 소문자를 구분하지 않게 만들 수 있습니다. WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
로그에서 여전히 LOP_DELETE_ROWS 작업을 찾아 삭제 된 개별 행을 볼 수 있습니다.
select * from fn_dblog(NULL, NULL)
where Operation = 'LOP_DELETE_ROWS'
로그가 재활용 (단순 복구 모델)되거나 백업 (전체 또는 대량 복구 모델)에 의해 잘린 경우 로그에서 여전히 사용 가능한 로그 작업 만 볼 수 있습니다.
로그 작업을 이해하는 것은 매우 복잡하므로 발생할 수있는 일부 로그 패턴을 이해하기 위해 실행 취소 또는 보상 작업과 같은 사항을 알고 있어야하지만 직접 커밋 된 DELETE는 이해하기가 쉽습니다.