이번 포스팅에서는 SQL Server 2019의 SSMS 상에서 DB 복원 - 'Options' 페이지에 대하여 알아보자!
SSMS GUI 뿐만 아니라 T-SQL 문으로도 살펴볼 것이다.
위 화면처럼 데이터베이스 복원의 '옵션' 페이지에서 크게 5가지 항목으로 나눠서 살펴보자!
1. Restore options (복원 옵션)
① WITH REPLACE (= 기존 DB '덮어쓰기')
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH REPLACE;
- '복원되는 DB의 이름'에 해당하는 DB를 '백업세트 디렉토리'에 해당하는 백업세트로 덮어쓰는 옵션
- 웬만하면 사용하지 않는 것을 권장한다. 복구 DB세트와 복원 대상이 되는 이름의 DB가 서로 다른 DB일 경우, DB 자체가 아예 바뀌는 것이기 때문에 매우 위험하다. 또한 최근에 기록된 로그가 백업되지 않았으므로(Tail-log를 백업하라는 요구사항보다 우선 적용되기 때문), 해당 옵션을 사용함으로써 commit 된 작업이 모두 손실될 우려가 있다.
② WITH KEEP_REPLICATION (= 복제 설정 유지)
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH KEEP_REPLICATION;
- 복제된 DB (DB copy본)를 가지고 백업할 경우, 백업세트가 생성된 서버 및 DB로 복원할 수도 있고, 아예 다른 서버 또는 DB로도 복원할 수 있는데, 이 경우 기본적으로 복제 설정(@publication, '구독' 등)은 유지 되지 않는다.
그러나, 위 옵션을 사용할 경우, 아예 다른 서버 또는 DB로도 복원할 경우에도 복제 설정을 그대로 유지하게 된다.
- 위 옵션을 사용할 경우, commit 되지 않은 트랜잭션을 rollback 하여 DB를 곧바로 사용할 수 있는 상태로 유지하게 된다.
③ WITH RESTRICTED_USER (= 복원된 DB에 대한 엑세스를 제한)
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH RESTRICTED_USER;
- db_owner, dbcreator 또는 sysadmin 의 멤버만 복원된 DB를 엑세스할 수 있게끔 제한한다.
2. Recovery state (복구 상태)
① WITH RECOVERY
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH RECOVERY;
- Default 옵션. DB 복원이 완료된 후, 곧바로 DB가 On-line 상태로 바뀐다. (그러므로, 한 번에 완전히 복구가 가능할 때 사용.)
- DB 복원을 하는 동안 commit 되지 않은 트랜잭션은 롤백하여 On-line 상태로 바꾸는 것이므로, Full 복구 모델 또는 Bulk-logged 복구 모델에서만 이 옵션을 선택해야 한다.
② WITH NORECOVERY
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH NORECOVERY;
- DB를 'Restroing 상태'로 유지하는 옵션. Restoring 상태가 되면, 해당 DB는 오프라인 상태가 된다.
- 트랜잭션 로그 백업 세트 등을 전체 백업 세트에 붙일 때 사용하는 옵션이다.
- 해당 옵션을 사용한 후에는 마지막에 반드시 RECOVERY 옵션을 달아주어야, 이후에 온라인 상태가 되어 해당 DB가 사용이 가능하다.
③ WITH STANDBY
RESTORE DATABASE [복원되는 DB의 이름] FROM DISK = '[백업세트 디렉토리]'
WITH STANDBY = '[standby_file_name(디렉토리)]';
- DB 복원 후에, 제한된 읽기 전용 엑세스로만 DB를 사용할 수 있도록 한다. 쉽게 말해 DB를 '대기 모드'로 유지한다.
- 해당 옵션은 off-line 복원에서만 사용할 수 있으며, on-line 복원에서는 사용할 수 없다.
- 해당 옵션으로 Restore 작업이 완료되면, 복구 결과를 취소할 수 있게끔 지정해 놓았던 대기 파일을 자동으로 삭제한다.
3. Tail-Log backup (비상 로그 백업)
- Take tail-log backup before restroe : 복원 작업 전, tail-log(비상 로그) 백업을 진행할 지 말지의 여부를 선택하는 옵션.
- Tail-log(비상 로그) 백업 : 아직 백업되지 않은 레코드를 캡처하여, 작업 손실을 방지하고 로그 체인을 그대로 유지함.
- Leave source database in the restoring state : Tail-log 백업의 대상이 되는 소스 DB를 'Restroing 상태'로 둔다.
4. Server connections (서버 연결)
- Clsoe existing connections to destination database : 복원대상이 되는 DB(Destination Database)의 커넥션들을 모두 종료한다.
=> 복원 작업을 수행하기 전, 해당 DB가 Single-User 모드로 설정되고 복원 작업이 완료될 때에 Multi-User 모드로 돌아온다.
5. Prompt
- 각 백업세트마다 복원 과정을 계속 진행할 지 묻는 대화 상자를 표시할 지 말지 결정하는 부분
이때 이 대화 상자에는 다음 미디어 세트의 이름과 다음 백업 세트의 이름 및 설명이 표시됨.
참고
'DB > SQL Server (MSSQL)' 카테고리의 다른 글
[MSSQL] 사용자 계정(SQL Server Authentication) 추가 및 권한 부여 / Server Roles, Database Role Membership (0) | 2022.09.02 |
---|---|
[MSSQL] DB를 잘못 건드려서 원하는 시점으로 복구하고 싶다면? (0) | 2022.07.01 |
[MSSQL] 자동 백업 스케줄러 설정 (2) - SSMS 활용 (0) | 2022.01.26 |
[MSSQL] 자동 백업 스케줄러 설정 (1) - Task Scheduler 활용 (0) | 2022.01.26 |
[MSSQL] 인덱스 유지 및 관리, 최적화 (0) | 2021.12.22 |
최근댓글