다음을 통해 공유


파일 복원 수행(전체 복구 모델)

이 항목에서는 전체 또는 대량 로드 복구 모델에서 데이터베이스에 여러 개의 파일 또는 파일 그룹이 있는 경우와 관련된 내용을 다룹니다.

파일 복원의 목표는 전체 데이터베이스를 복원하지 않고 하나 이상의 손상된 파일을 복원하는 것입니다. 모든 SQL Server 버전에서는 데이터베이스가 오프라인 상태이면 파일을 복원합니다(오프라인 페이지 복원). SQL Server 2005 Standard, SQL Server 2005 Express Edition 및 SQL Server 2005 Workgroup 이상 버전에서는 오프라인 복원만 지원되며 주 파일 그룹에 파일을 복원하려면 항상 데이터베이스가 오프라인 상태여야 합니다. SQL Server 2005 Enterprise Edition 이상 버전에서는 데이터베이스가 이미 오프라인 상태이면 오프라인 복원을 사용합니다.

SQL Server 2005 Enterprise Edition 이상 버전의 경우 파일을 복원하는 동안 데이터베이스가 온라인 상태이면 데이터베이스도 온라인 상태로 유지됩니다. 데이터베이스가 온라인 상태일 때 파일을 복원 및 복구하는 작업을 온라인 파일 복원이라고 합니다.

이러한 파일 복원 시나리오는 다음과 같습니다.

  • 오프라인 파일 복원

    오프라인 파일 복원에서 손상된 파일 또는 파일 그룹이 복원되는 동안 데이터베이스는 오프라인 상태입니다. 복원 시퀀스의 마지막에 데이터베이스는 온라인 상태가 됩니다.

  • 온라인 파일 복원

    SQL Server 2005 Enterprise Edition 이상 버전에서는 데이터베이스가 온라인 상태인 경우 파일 복원이 자동으로 온라인으로 수행됩니다. 하지만 파일을 복원 중인 모든 파일 그룹은 오프라인 상태입니다. 오프라인 파일 그룹의 모든 파일이 복구되면 파일 그룹이 자동으로 온라인 상태가 됩니다. 온라인 복원에 대한 자세한 내용은 온라인 복원 수행을 참조하십시오.

    [!참고]

    온라인 파일 그룹만 쿼리 또는 업데이트할 수 있습니다. 복원 또는 복구 중인 파일이 포함된 파일 그룹을 비롯하여 오프라인 상태인 파일 그룹에 액세스하려고 하면 오류가 발생합니다.

복원 중인 파일 그룹이 읽기/쓰기가 가능한 경우 손상되지 않은 로그 백업 체인은 마지막 데이터 또는 차등 백업이 복원된 후에 적용해야 합니다. 이를 통해 파일 그룹을 로그 파일에 있는 현재 활성 로그 레코드의 로그 레코드로 가져옵니다. 일반적으로 복구 지점은 로그의 후반부이지만 반드시 그런 것은 아닙니다.

복원 중인 파일 그룹이 읽기 전용인 경우 일반적으로 로그 백업을 적용할 필요가 없으므로 건너뜁니다. 파일이 읽기 전용 상태가 된 이후에 백업이 수행되면 마지막 백업이 복원되고 롤포워드가 대상 지점에서 정지됩니다.

파일 또는 파일 그룹 복원

손상된 파일을 파일 백업 및 차등 파일 백업에서 복원하려면

  1. 활성 트랜잭션 로그의 비상 로그 백업을 만듭니다.

    로그 파일 손상으로 인해 이 작업을 수행할 수 없으면 전체 데이터베이스를 복원해야 합니다. 트랜잭션 로그 백업 방법은 트랜잭션 로그 백업 만들기를 참조하십시오.

    중요 정보중요

    오프라인 파일을 복원하려면 이 파일을 복원하기 전에 비상 로그 백업을 수행해야 합니다. 온라인 파일을 복원하려면 이 파일을 복원한 후에 로그 백업을 수행해야 합니다. 이러한 로그 백업은 파일을 데이터베이스의 나머지 부분과 일치하는 상태로 복구해야 하기 때문에 필요합니다.

  2. 각 손상된 파일을 해당 파일의 최신 백업에서 복원합니다.

  3. 복원된 각 파일에 대한 가장 최근의 차등 파일 백업(있을 경우)을 복원합니다.

  4. 복원 파일 중 가장 오래된 것을 포함하는 백업부터 시작하여 1단계에서 만든 비상 로그 백업까지 트랜잭션 로그 백업을 순서대로 복원합니다.

    파일 백업 후에는 생성된 트랜잭션 로그 백업을 복원하여 데이터베이스와 일치하는 상태로 만들어야 합니다. 트랜잭션 로그 백업은 복원 파일에 적용된 변경 내용만 적용하므로 빨리 롤포워드할 수 있습니다. 손상되지 않은 파일은 복사되지 않고 롤포워드되므로 개별 파일 복원이 전체 데이터베이스 복원보다 나을 수 있습니다. 하지만 전체 로그 백업 체인은 읽기가 가능해야 합니다.

  5. 데이터베이스를 복구합니다.

[!참고]

파일 백업은 지정 시간 이전의 시점으로 데이터베이스를 복원하는 데 사용될 수 있습니다. 이렇게 하려면 파일 백업의 전체 세트를 복원한 후 최근 복원된 파일 백업 다음에 있는 대상 지점에 이를 때까지 순서대로 트랜잭션 로그 백업을 복원해야 합니다. 지정 시간 복구에 대한 자세한 내용은 데이터베이스를 백업 내 지점으로 복원을 참조하십시오.

파일과 파일 그룹을 복원하려면

고급 항목

오프라인 파일 복원을 위한 Transact-SQL 복원 시퀀스(전체 복구 모델)

파일 복원 시나리오는 해당 데이터를 복사하고 롤포워드하고 복구하는 단일 복원 시퀀스로 이루어집니다.

다음 Transact-SQL 코드에서는 파일 복원 시나리오에 필요한 복원 시퀀스의 중요한 RESTORE 옵션을 보여 줍니다. 이 용도와 관련 없는 구문 및 세부 사항은 생략됩니다.

이 예에서는 두 개의 보조 파일 A와 B를 NORECOVERY로 오프라인 복원하는 경우를 보여 줍니다. 그런 다음 두 개의 로그 백업에 NORECOVERY를 적용하고 나서 RECOVERY로 복원되는 비상 로그 백업을 실행합니다. 다음 예에서는 오프라인 파일 복원을 위해 파일을 오프라인 상태로 만듭니다.

--Take the file offline.
ALTER DATABASE database_name MODIFY FILE SET OFFLINE
-- Back up the currently active transaction log.
BACKUP LOG database_name
   TO <tail_log_backup>
   WITH NORECOVERY
GO 
-- Restore the files.
RESTORE DATABASE database_name FILE=<name> 
   FROM <file_backup_of_file_A> 
   WITH NORECOVERY
RESTORE DATABASE database_name FILE=<name> ......
   FROM <file_backup_of_file_B> 
   WITH NORECOVERY
-- Restore the log backups.
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup> 
   WITH RECOVERY