다음을 통해 공유


데이터베이스를 지정한 복구 지점에 복구하는 최적의 방법

파랑 데이터베이스 디스크를 나타내는 아이콘 이 항목에서는 전체 또는 대량 로그 복구 모델을 사용하는 데이터베이스와 관련된 내용을 다룹니다.

또한 지정한 복구 지점에 데이터베이스를 복원하기 위한 몇 가지 최적의 방법을 보여 줍니다.

STANDBY를 사용하여 알 수 없는 지정 시간 찾기

데이터베이스를 지정한 복구 지점에 복원하려고 하는데 대상 시간, LSN 또는 표시된 트랜잭션(있는 경우)을 알 수 없는 경우가 있습니다. 한 가지 해결 방법은 WITH RECOVERY 대신 WITH STANDBY **=**standby_file_name을 지정하여 주 데이터 파일 및 필요에 따라 다른 데이터 파일을 증분 롤포워드하는 것입니다. 이 경우 STANDBY 옵션을 사용하여 읽기 전용 액세스를 위해 데이터베이스를 복구합니다. 이렇게 하면 데이터베이스를 읽고 필요한 지정 시간 정보를 찾을 수 있습니다. 데이터베이스가 대상 지정 시간 이후에 롤포워드 되는 경우 대기 파일을 사용하면 복구 처리에 영향을 끼치지 않습니다. 데이터베이스가 대상 지정 시간에 아직 도달하지 않은 경우 각 복원 문에 동일한 대기 파일을 지정하는 WITH STANDBY를 사용하여 연속적인 로그 백업을 복원할 수 있습니다.

대상 복구 지점을 식별한 후 해당 지정 시간에 다시 롤포워드할 수 있습니다. 대상 지정 시간에 도달하면 RECOVERY 옵션을 사용하여 데이터베이스 부분 복원을 수행합니다. 그런 다음 나머지 파일(있는 경우)은 데이터베이스와 일관성을 유지하도록 복원 및 복구할 수 있습니다. 마지막 전체 로그 복원을 복원하면 대상 복구 지점 다음에 수행된 첫 번째 로그 백업을 복원합니다.

STANDBY 옵션에 대한 자세한 내용은 RESTORE 인수(Transact-SQL)를 참조하십시오.

복원 시퀀스의 지정 시간 일찍 지정

복원 시퀀스는 하나 이상의 복원 단계를 통해 데이터를 이동시키는 하나 이상의 복원 작업으로 구성됩니다. 복원 시퀀스에서 원하는 정보를 자세히 제공할수록 작업을 다시 시작하게 하는 오류가 발생할 가능성이 줄어듭니다. 지정 시간 복원의 경우 SQL Server 데이터베이스 엔진에서는 복원할 목표 지정 시간을 식별하기 위해 복원 시퀀스 시작 시와 도중에 지정된 정보를 사용합니다. 복원 시퀀스에서 대기 시간이 너무 길어지면 복원 시퀀스가 실패합니다. 목표 지정 시간을 지나쳐 복원이 진행되지 않도록 복원 시퀀스에 중지 시점 정보를 일찍 제공해야 합니다.

특정 복구 시점에서 중지하려면 RECOVERY 옵션과 함께 STOPAT, STOPBEFOREMARK 또는 STOPATMARK를 사용하여 모든 RESTORE LOG 문에 이러한 의도를 전달해야 합니다. RECOVERY 및 STOPAT 옵션을 함께 사용할 때 지정된 시간이 트랜잭션 로그 범위 내에 있는 시간을 초과하는 경우와 같이 트랜잭션 로그 백업이 요청한 시간을 포함하지 않을 경우 경고가 생성되고 데이터베이스는 복구되지 않습니다. 복구 지점에 도달하면 데이터베이스가 복구되고 다른 로그 백업을 복원하려는 시도가 실패합니다. RECOVERY 및 STOPAT 옵션을 함께 사용하여 로그 백업을 복원하면 어떤 복원도 중지 시점을 넘어 진행되지 않습니다.

예: 지정 시간 복원

다음 예에서는 복원 시퀀스가 첫 번째 로그 백업 적용 시 특정 시간에 중지한다는 의도를 선언하기 시작합니다. 이 예에서는 중지 시점이 차등 백업 이후에 첫 번재 로그 백업에서 발생합니다.

RESTORE DATABASE database_name FROM full_backup 
    WITH NORECOVERY;
RESTORE DATABASE database_name FROM full_differential_backup 
    WITH NORECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;

지정한 로그 복원의 성공 여부는 다음 표에 설명된 바와 같이 time이 로그 백업에 의해 캡처된 간격 내에 있는지 여부에 따라 달라집니다.

로그 백업에 의해 캡처된 간격과 time의 관계 효과

time이 간격 이전인 경우

복원이 실패하고 롤포워드가 발생하지 않습니다.

time이 간격 사이인 경우

마지막 복원에 성공하고 데이터베이스가 복구됩니다.

time이 간격 이후인 경우

롤포워드가 성공하지만 데이터베이스가 복구되지 않습니다. 이는 아직 time에 도달하지 않았기 때문입니다.

모든 후속 RESTORE 문에서 중지 지점 선언

중지 지점은 STOPAT, STOPBEFOREMARK 또는 STOPATMARK 옵션을 지정하는 문에 해당됩니다. RESTORE 문에서 이 옵션을 생략하면 전체 백업이 복원됩니다.

지정 시간 복원 시퀀스가 진행될 때 time에 새로운 값을 지정하여 복구 지점을 변경할 수 있습니다. 단, 데이터베이스가 새 time을 지나치지 않았어야 합니다.

[!참고] STOPBEFOREMARK 및 STOPATMARK 옵션에는 두 개의 매개 변수 mark_namelsn_number가 있습니다. 로그 백업에서 트랜잭션 표시를 식별하는 mark_name 매개 변수는 RESTORE LOG 문에서만 사용할 수 있습니다. 로그 시퀀스 번호를 지정하는 lsn_number 매개 변수는 RESTORE DATABASE 문과 RESTORE LOG 문에서 모두 사용할 수 있습니다.

참고 항목

개념

트랜잭션 로그 백업 적용
LSN(로그 시퀀스 번호)로 복구
표시된 트랜잭션으로 복구

관련 자료

RESTORE(Transact-SQL)
데이터베이스를 백업 내 지점으로 복원

도움말 및 정보

SQL Server 2005 지원 받기