SQL Server 데이터베이스를 복원할 때 선택할 수 있는 복구 상태가 3가지가 있다는 것을 알았습니다:
항상 기본값으로 놔두었는데 이 모든 것이 무엇을 의미할까요?
(가급적이면 일반인이 이해하기 쉬운 용어로)
게이트킬러,
개념을 이해할 수 있도록 간단한 용어로(SQLBOL에서 복사하여 붙여넣기가 아닌) 설명합니다:
복구를 사용하여 복원하면 백업 미디어 파일(예: 풀데이터.bak)을 사용하여 백업 파일이 생성된 시점으로 데이터베이스를 복원합니다. 이 기능은 시스템 개발 시와 같이 데이터베이스를 이전 상태로 복원하기 위해 시간을 거슬러 올라가려는 경우에 유용합니다.
데이터베이스를 최신 데이터로 복원하려는 경우(예: 시스템 재해 복구를 수행 중이고 데이터 손실이 없어야 하는 경우) 해당 백업과 해당 백업 이후에 생성된 모든 트랜잭션 로그를 복원해야 합니다. 이때는 복원 노어커버리를 사용합니다. 이렇게 하면 나중에 생성된 트랜잭션 로그를 장애 지점까지 바로 복원할 수 있습니다(해당 로그가 있는 한).
대기 상태로 복구는 데이터베이스를 중요한 날짜까지 복원하는 기능(위의 복구와 같은)이지만 데이터베이스를 여전히 읽기 전용으로 사용할 수 있도록 하는 기능입니다. 새 트랜잭션 로그를 데이터베이스에 계속 적용하여 데이터베이스를 최신 상태로 유지할 수 있습니다(대기 서버). 시스템 운영으로 복귀하기 위해 전체 데이터베이스를 복원하는 데 시간이 너무 오래 걸리는 경우 이 방법을 사용합니다. (즉, 복원하는 데 16시간이 걸리지만 15분마다 트랜잭션 로그 업데이트를 받을 수 있는 멀티 TB 데이터베이스가 있는 경우입니다.)
이는 미러 서버와 비슷하지만 모든 트랜잭션이 실시간으로 백업 서버로 전송되지 않습니다.
Microsoft SQL Server 데이터베이스를 노어 복구, 복구 또는 대기 모드로 설정할 수 있습니다.
복구는 사용자가 데이터베이스에 연결하고 액세스할 수 있는 데이터베이스의 정상적이고 일반적인 상태입니다(적절한 권한이 설정되어 있는 경우).
복구 모드에서는 데이터베이스 관리자가 차등 백업 또는 트랜잭션 백업과 같은 추가 백업 파일을 복원할 수 있습니다. 데이터베이스가 이 상태인 동안에는 사용자가 이 데이터베이스에 연결하거나 액세스할 수 없습니다.
대기 상태는 노리커버리 상태와 거의 동일하지만 사용자가 데이터베이스에 즉시 액세스하여 연결하거나 액세스할 수 있습니다. 따라서 사용자는 데이터베이스에 대해 SELECT 명령만 실행할 수 있습니다. 이는 로그 배송에서 보고 목적으로 자주 사용됩니다. 유일한 단점은 데이터베이스에 쿼리를 실행하는 사용자가 있는 동안에는 SQL Server 또는 DBA가 추가 백업 파일을 복원할 수 없다는 것입니다. 따라서 항상 데이터베이스에 액세스하는 사용자가 많은 경우 복제가 뒤처질 수 있습니다.
온라인 책에서, 나는 당신이 그것을 읽고 나면 꽤 분명하다고 생각합니다.
**노리커버리
복원 작업에서 커밋되지 않은 트랜잭션을 롤백하지 않도록 지시합니다. 다른 트랜잭션 로그를 적용해야 하는 경우 NORECOVERY 또는 STANDBY 옵션을 지정해야 합니다. NORECOVERY, RECOVERY 또는 STANDBY를 지정하지 않으면 기본값은 RECOVERY입니다.
데이터베이스 백업 및 여러 트랜잭션 로그를 복원할 때 또는 여러 RESTORE 문이 필요한 경우(예: 전체 데이터베이스 백업 후 차등 데이터베이스 백업) SQL Server에서는 마지막 RESTORE 문을 제외한 모든 문에 WITH NORECOVERY 옵션을 사용해야 합니다.
참고 NORECOVERY 옵션을 지정하면 이 중간 복구되지 않은 상태에서는 데이터베이스를 사용할 수 없습니다.
파일 또는 파일 그룹 복원 작업과 함께 사용하면 복원 작업 후 데이터베이스가 복원 상태로 유지됩니다. 이 기능은 이러한 상황에서 유용합니다:
복원 스크립트가 실행 중이고 로그가 항상 적용되고 있는 경우.
파일 복원 시퀀스가 사용되며 두 복원 작업 사이에 데이터베이스를 사용할 수 없도록 설계된 경우.
복구
복원 작업에 커밋되지 않은 트랜잭션을 롤백하도록 지시합니다. 복구 프로세스가 끝나면 데이터베이스를 사용할 수 있습니다.
후속 RESTORE 작업(RESTORE LOG 또는 차등에서 데이터베이스 복원)을 계획하는 경우 대신 NORECOVERY 또는 STANDBY를 지정해야 합니다.
NORECOVERY, RECOVERY 또는 STANDBY가 지정되지 않은 경우 기본값은 RECOVERY입니다. 이전 버전의 SQL Server에서 백업 세트를 복원하는 경우 데이터베이스 업그레이드가 필요할 수 있습니다. 이 업그레이드는 복구가 지정되면 자동으로 수행됩니다. 자세한 내용은 트랜잭션 로그 백업을 참조하세요.
STANDBY = undo_file_name
복구 효과를 되돌릴 수 있도록 실행 취소 파일 이름을 지정합니다. 실행 취소 파일에 필요한 크기는 커밋되지 않은 트랜잭션으로 인한 실행 취소 작업의 양에 따라 달라집니다. NORECOVERY, RECOVERY 또는 STANDBY가 지정되지 않은 경우 기본값은 RECOVERY입니다.
STANDBY를 사용하면 트랜잭션 로그 복원 사이에 읽기 전용 액세스를 위해 데이터베이스를 불러올 수 있으며, 웜 대기 서버 상황이나 로그 복원 사이에 데이터베이스를 검사하는 데 유용한 특수 복구 상황에서 사용할 수 있습니다.
지정된 실행 취소 파일 이름이 존재하지 않으면 SQL Server가 파일을 만듭니다. 파일이 있는 경우 SQL Server가 해당 파일을 덮어씁니다.
동일한 실행 취소 파일을 동일한 데이터베이스의 연속 복원에 사용할 수 있습니다. 자세한 내용은 대기 서버 사용을 참조하십시오.
중요 지정된 실행 취소 파일 이름이 포함된 드라이브의 디스크 여유 공간이 모두 소진되면 복원 작업이 중지됩니다.
데이터베이스 업그레이드가 필요한 경우에는 대기 상태가 허용되지 않습니다.