다음을 통해 공유


방법: 지정 시간 복원(Transact-SQL)

이 항목에서는 지정 시간으로 복원하는 방법에 대해 설명합니다.

시간을 지정하여 복원하려면

  1. NORECOVERY 옵션을 사용하여 RESTORE DATABASE 문을 실행합니다.

    [!참고]

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

  2. RESTORE LOG 문을 실행하여 각 로그 백업을 적용하며 다음을 지정합니다.

    • 트랜잭션 로그가 적용될 데이터베이스의 이름

    • 트랜잭션 로그 백업을 복원하는 백업 장치

    • RECOVERY 및 STOPAT 옵션. 지정된 시간이 트랜잭션 로그에서 수용하는 시간을 초과하는 경우처럼 요청한 시간이 트랜잭션 로그 백업에 포함되지 않을 경우 경고가 생성되고 데이터베이스는 복구되지 않은 상태로 남습니다.

다음 예에서는 April 15, 2020, 12:00 AM 상태로 데이터베이스를 복원하고 여러 로그 백업이 연관된 복원 작업을 보여 줍니다. 백업 장치 AdventureWorksBackups에서 복원할 전체 데이터베이스 백업은 해당 장치의 세 번째 백업 세트(FILE = 3)이고, 첫 번째 로그 백업은 네 번째 백업 세트(FILE = 4)이고, 두 번째 로그 백업은 다섯 번째 백업 세트(FILE = 5)입니다.

중요 정보중요

AdventureWorks 데이터베이스는 단순 복구 모델을 사용합니다. 로그 백업을 허용하려면 전체 데이터베이스 백업을 수행하기 전에 ALTER DATABASE AdventureWorks SET RECOVERY FULL을 사용하여 데이터베이스에서 전체 복구 모델을 사용하도록 설정해야 합니다.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks WITH RECOVERY; 
GO