데이터베이스를 백업 내 지점으로 복원

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

실패 지점 이전의 특정 지정 시간, 표시 또는 LSN(로그 시퀀스 번호)으로 데이터베이스를 복원 및 복구할 수 있습니다. 예를 들어 트랜잭션에 의해 일부 데이터가 잘못 변경된 경우 잘못된 데이터가 입력되기 직전의 복구 지점으로 데이터베이스를 복원할 수 있습니다. 데이터베이스의 복구 지점을 지정하는 복원을 지정 시간 복원이라고 합니다.

다음 그림에서는 t9 시점에 수행된 트랜잭션 로그 중간의 복구 지점으로 복원하는 작업을 보여 줍니다. 이 백업의 나머지 부분과 t10 시점에 수행된 후속 로그 백업에 대한 변경 내용은 삭제됩니다.

로그 백업 중간 지점으로 복원

대상 복구 지점은 다음 중 하나를 사용하여 지정합니다.

  • 트랜잭션 로그 내의 특정 지정 시간

  • 트랜잭션 로그 레코드에 삽입된 명명된 표시

  • LSN(로그 시퀀스 번호)

[!참고]

LSN으로 복구하는 것은 도구 공급업체를 위해 특별히 제작된 기능으로 일반적으로 유용한 기능은 아닙니다.

지정된 시간 또는 트랜잭션은 항상 로그 백업에서 복원되므로 대상 복구 지점은 트랜잭션 로그 백업에 포함되어야 합니다. 데이터베이스를 특정 지정 시간 또는 트랜잭션으로 복원하려면 STOPAT, STOPATMARK 또는 STOPBEFOREMARK 절에 대상 복구 지점을 지정합니다. 복원 순서의 모든 RESTORE LOG 문에서 동일한 STOPAT, STOPATMARK 또는 STOPBEFOREMARK 절에 대상 시간이나 트랜잭션을 지정해야 합니다. 복구 지점이 포함된 로그 백업을 적용할 때 해당 지점 앞에 오는 트랜잭션만 복구할 수 있습니다.

지정 시간 복원을 수행하려면 먼저 종료 지점이 대상 복원 시간보다 빠른 전체 데이터베이스 백업을 복원해야 합니다. 복원할 데이터베이스를 손쉽게 확인하려면 선택적으로 RESTORE DATABASE 문에 WITH STOPAT, STOPATMARK 또는 STOPBEFOREMARK 절을 지정하여 데이터 백업이 지정된 대상 시간에 비해 너무 최근인 경우 오류가 발생하도록 하면 됩니다. 그러나 데이터 백업에 대상 시간이 포함된 경우에도 항상 전체 데이터 백업이 복원됩니다.

[!참고]

이 로그 백업은 지정 시간 복원 순서를 시작할 때 복원된 부분 백업이나 전체 데이터베이스 백업과 동일한 복구 경로에 있어야 합니다.

복구가 완료되면 데이터베이스의 시간은 주 파일을 복구한 복구 지점에 의해 결정됩니다. 후속 복원 작업이 있는 경우 복구 지점이 해당 시간의 데이터베이스와 일치해야 합니다.

부분 복원 순서에서 FILESTREAM 파일 그룹이 제외될 경우 지정 시간 복원은 지원되지 않습니다. 복원 시퀀스를 강제로 계속할 수 있지만 RESTORE 문에서 누락된 FILESTREAM 파일 그룹은 복원되지 않습니다. 지정 시간 복원을 강제로 수행하려면 후속 RESTORE LOG 문에도 지정해야 하는 STOPAT, STOPATMARK 또는 STOPBEFOREMARK 옵션과 함께 CONTINUE_AFTER_ERROR 옵션을 지정합니다. CONTINUE_AFTER_ERROR를 지정하면 부분 복원 순서가 성공하고 FILESTREAM 파일 그룹이 복구 불가능한 상태가 됩니다.

[!참고]

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

섹션 내용