이번 포스팅에서는 SQL Server 2019의 SSMS 상에서 DB 복원 - 'Options' 페이지에 대하여 알아보자!

SSMS GUI 뿐만 아니라 T-SQL 문으로도 살펴볼 것이다.

 

'Databases' 마우스 우클릭 - [Restore Databases...] 클릭
[Restore Database] 페이지 - [Options] 페이지

 

위 화면처럼 데이터베이스 복원의 '옵션' 페이지에서 크게 5가지 항목으로 나눠서 살펴보자!


1. Restore options (복원 옵션)

'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 (복구 상태)

'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 (비상 로그 백업)

'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 (서버 연결)

'Server connections' 부분

- Clsoe existing connections to destination database : 복원대상이 되는 DB(Destination Database)의 커넥션들을 모두 종료한다. 
 => 복원 작업을 수행하기 전, 해당 DB가 Single-User 모드로 설정되고 복원 작업이 완료될 때에 Multi-User 모드로 돌아온다.


5. Prompt

'Prompt' 부분

- 각 백업세트마다 복원 과정을 계속 진행할 지 묻는 대화 상자를 표시할 지 말지 결정하는 부분

  이때 이 대화 상자에는 다음 미디어 세트의 이름다음 백업 세트의 이름 및 설명이 표시됨.


참고

https://docs.microsoft.com/ko-kr/sql/relational-databases/backup-restore/restore-database-options-page?view=sql-server-ver15 

 

데이터베이스 복원(옵션 페이지) - SQL Server

SQL Server에서 데이터베이스를 복원할 때 데이터베이스 복원 대화 상자의 옵션 페이지를 사용하여 복원 작업의 동작 및 결과를 수정합니다.

docs.microsoft.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기