데이터베이스 백업과 복원 작업은 데이터베이스 속성인 복구 모델 설정에 영향을 받으며 복구 모델이란 데이터 베이스의 트랜잭션 로그를 관리하는 방법의 유형이다.
복구 모델은 단순(Simple), 전체(Full), 대량 로그(Bulk Logged) 3가지가 있다.
※ 데이터베이스 복구 모델 확인 스크립트
SELECT Name,
(SELECT DATABASEPROPERTYEX(name,'RECOVERY') AS RecoverModel
FROM master..sysdatabases
ORDER BY Name
(1) 단순 (Simple)
체크포인트가 발생할 때마다 트랜잭션 로그가 비워지는 모델.
트랜잭션이 보관 되지 않으므로 트랜잭션 로그백업을 지원하지 않으며, 복원 시 전체 또는 차등 백업한 시점까지만 복원 할 수 있고 원하는 특정 시점이나 페이지 복원은 불가능 하다.
이에 트랜잭션 로그의 저장소 공간은 작지만 마지막 전체, 차등백업 이후 데이터는 손실 될 수 있다.
테스트 환경 또는 데이터 베이스 용량이 적을때 많이 사용한다.
단순 복구 모델 사용 시 데이터 손실을 방지하기 위해서 주기적인 전체 또는 차등 백업을 권장.
(2) 대량로그 복구 모델(Bulk Logged)
BCP, Bulk INSERT, SELECT INTO , CREATE INDEX, DBDCC DBREINDEX , DROP INDEX 등 대량의 변경 작업을 처리하는 대량(Bulk) 명령을 수행 할 때, 발생하는 모든 트랜잭션 로그를 기록하지 않고 최소한의 로깅을 제공하여 전체 복구 모델에 비해 빠른 성능을 가지고 있다.
(3) 전체 복구 모델(Full)
대량 작업, 인덱스 생성 정보까지 모든 트랜잭션을 기록하는 모델이다.
SQL SEVER에서 지원하는 모든 백업 유형을 사용할 수 있다. 특정 시점 복원이나 데이터 손실을 방지 할 수 있으나 그만큼 용량과 비용이 많이 발생된다.