특정 지정 시간으로 복구

이 항목에서는 전체 복구 모델 또는 대량 로그 복구 모델을 사용하는 SQL Server 데이터베이스와 관련된 내용을 다룹니다.

대량 로그 복구 모델에서 로그 백업에 대량 로그 변경 내용이 있을 경우 해당 백업 내의 지점으로 지정 시간 복구를 수행할 수 없습니다. 이 경우에는 데이터베이스를 트랜잭션 로그 백업의 끝으로 복구해야 합니다.

특정 시간으로 복원하려면

특정 시간으로 복원하기 위한 Transact-SQL 구문

지정된 시간은 항상 로그 백업에서 복원됩니다. 복원 순서의 모든 RESTORE LOG 문에서 동일한 STOPAT 절에 대상 시간이나 트랜잭션을 지정해야 합니다. 지정 시간 복원을 수행하려면 먼저 종료 지점이 대상 복원 시간보다 빠른 전체 데이터베이스 백업을 복원해야 합니다. 대상 지정 시간이 포함된 로그 백업까지의 모든 후속 로그 백업을 복원하는 동안 이 전체 데이터베이스 백업은 가장 최근 전체 데이터베이스 백업보다 더 오래된 버전일 수 있습니다.

복원할 데이터베이스를 손쉽게 확인하려면 선택적으로 RESTORE DATABASE 문에 WITH STOPAT 절을 지정하여 데이터 백업이 지정된 대상 시간에 비해 너무 최근인 경우 오류가 발생하도록 하면 됩니다. 그러나 데이터 백업에 대상 시간이 포함된 경우에도 항상 전체 데이터 백업이 복원됩니다.

기본 구문은 다음과 같습니다.

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

복구 지점은 time에 지정된 datetime 값 또는 그 전에 발생한 최근 트랜잭션 커밋입니다.

특정 시점 이전에 수정한 내용만 복원하려면 복원하는 각 백업에 대해 WITH STOPAT **=**time을 지정합니다. 이렇게 하면 대상 시간을 지나지치 않게 됩니다.

일반적으로 지정 시간 복원 순서에는 다음 단계가 포함됩니다.

  • 데이터베이스를 복구하지 않고 마지막 전체 데이터베이스 백업과 마지막 차등 데이터베이스 백업(있는 경우)을 복원합니다(RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  • 로그 복원을 중지할 시간을 지정하고 각 트랜잭션 로그 백업을 생성된 순서대로 적용합니다(RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

자세한 내용은 데이터베이스를 백업 내 지점으로 복원을 참조하십시오.