트랜잭션 로그에서 삭제 문보기


답변:


11

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이므로 일치하는 술어에 포함시키지 않습니다.
Jon Seigel

From in delete 문은 선택 사항이므로 True를 사용하여 쿼리 결과를 제한했습니다. 하지만 네 맞아요
AmmarR

대 / 소문자를 구분하는 SQL Server 인스턴스의 경우 위의 코드가 누락 delete되고 DELETE등이 발생합니다. where 절을 대 / 소문자를 구분하지 않게 만들 수 있습니다. WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
Max Vernon

11

로그에서 여전히 LOP_DELETE_ROWS 작업을 찾아 삭제 된 개별 행을 볼 수 있습니다.

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

로그가 재활용 (단순 복구 모델)되거나 백업 (전체 또는 대량 복구 모델)에 의해 잘린 경우 로그에서 여전히 사용 가능한 로그 작업 만 볼 수 있습니다.

로그 작업을 이해하는 것은 매우 복잡하므로 발생할 수있는 일부 로그 패턴을 이해하기 위해 실행 취소 또는 보상 작업과 같은 사항을 알고 있어야하지만 직접 커밋 된 DELETE는 이해하기가 쉽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.