방법: 트랜잭션 로그 백업 적용(Transact-SQL)

데이터베이스에 트랜잭션 로그 백업을 적용하려면 다음 조건에 맞아야 합니다.

  • 가장 최근의 전체 또는 차등 데이터베이스 백업이 생성되기 전에 데이터베이스에 전체 복구 모델이나 대량 로그 복구 모델이 사용되고 있어야 합니다.

  • 복원 시퀀스는 이전 백업을 복원할 때 WITH NORECOVERY를 지정해야 합니다.

  • 로그 백업이 로그 체인에 따라 간격 없이 생성된 순서대로 적용되어야 합니다. 마지막 로그 백업의 경우를 제외하고 다음과 같이 WITH NORECOVERY를 사용해야 합니다.

    RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
    
  • 마지막 로그 백업을 적용할 때 다음 중 하나를 수행할 수 있습니다.

    • 데이터베이스를 마지막 BACKUP LOG 문의 일부로 복구합니다.

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;
      GO
      
    • 별도의 RESTORE DATABASE 문을 사용하여 데이터베이스를 복구할 때까지 기다립니다.

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; 
      RESTORE DATABASE <database_name> WITH RECOVERY;
      GO
      

      데이터베이스를 복구할 때까지 기다리면 필요한 모든 로그 백업을 복원했는지 확인할 수 있습니다. 이 방법은 지정 시간 복원을 수행할 때 사용하는 것이 좋습니다.

중요 정보중요

모호하지 않도록 항상 모든 RESTORE 문에 명시적으로 WITH NORECOVERY 또는 WITH RECOVERY를 지정하는 것이 좋습니다. 이는 스크립트 작성 시 특히 중요합니다.

트랜잭션 로그 백업을 적용하려면

  1. RESTORE LOG 문을 실행하여 트랜잭션 로그 백업을 적용합니다. 이때 다음을 지정합니다.

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

    • 트랜잭션 로그 백업이 복원될 백업 장치

    • NORECOVERY 절

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

    RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY

    여기서 database_name은 데이터베이스의 이름이고 <backup_device>는 복원 중인 로그 백업이 포함된 장치의 이름입니다.

  2. 적용해야 할 각 트랜잭션 로그 백업에 대해 1단계를 반복합니다.

  3. 복원 시퀀스의 마지막 백업을 복원한 후 데이터베이스를 복구하려면 다음 문을 사용합니다.

    RESTORE database_name WITH RECOVERY

    중요 정보중요

    미러 데이터베이스를 만드는 경우 복구 단계를 생략하십시오. 미러 데이터베이스는 RESTORING 상태로 유지되어야 합니다.

기본적으로 AdventureWorks2008R2 데이터베이스는 단순 복구 모델을 사용합니다. 다음 예에서는 전체 복구 모델을 사용하도록 데이터베이스를 다음과 같이 변경해야 합니다.

ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL

1. 단일 트랜잭션 로그 백업 적용

다음 예에서는 먼저 AdventureWorks2008R2_1이라는 백업 장치에 상주하는 전체 데이터베이스 백업을 사용하여 AdventureWorks2008R2 데이터베이스를 복원합니다. 그런 다음 AdventureWorks2008R2_log라는 백업 장치에 상주하는 첫 번째 트랜잭션 로그 백업을 적용합니다. 마지막으로 데이터베이스를 복구합니다.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 1,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY
GO

2. 여러 트랜잭션 로그 백업 적용

다음 예에서는 먼저 AdventureWorks2008R2_1이라는 백업 장치에 상주하는 전체 데이터베이스 백업을 사용하여 AdventureWorks2008R2 데이터베이스를 복원합니다. 그런 다음 AdventureWorks2008R2_log라는 백업 장치에 상주하는 처음 3개의 트랜잭션 로그 백업을 하나씩 적용합니다. 마지막으로 데이터베이스를 복구합니다.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 1,
   NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 2,
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 3,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY
GO