[MsSQL] 데이터베이스 전체 복구, 차등 복구, 로그 복구 알아보기
MSSQL 은 전체 복원, 차등 복원, 로그 복원을 지원합니다.
전체 복원과 차등 복원은 같은 구문을 사용합니다.
구문은 다음과 같습니다.
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak';
로그 복원 문법은 다음과 같습니다.
RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak';
복원이 완료되면 다른 사용자는 바로 데이터베이스에 접근할 수 있습니다.
하지만 전체 백업과 로그백업을 병행한 경우에는, 전체 복원을 한 후에 로그 복원을 해야 합니다.
전체 복원만 한 상태에서 사용자가 데이터베이스에 접근한다면 아직 로그 복원되지 않은 불완전한 데이터베이스에 접근하는 것이기 때문엡니다.
전체 복원을 하고 아직 복원이 완료된 것이 아니라는 표시를 함으로써 사용자가 접근불가 설정
이 때 사용하는 옵션은 WITH NORECOVERY 입니다.
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH NORECOVERY;
RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak'
NORECOVERY 옵션을 사용하였을 경우에는 WITH RECOVERY 구문을 한번 더 사용하여 복원 중 상태를 종료하여야 합니다.
RESTORE DATABASE AdventureWorks WITH RECOVERY;
전체 복원 후 데이터가 정상인지 확인하기 위해 db_owner, sysadmin 권한을 가진 사용자만 접근하게 하는 방법
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH RESTRICTED_USER;
RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak'
복원 시 데이터/로그 파일의 경로를 설정
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak'
WITH MOVE 'AdventureWorks_data' TO 'D:\Data\adv.mdf'
,MOVE 'AdventureWorks_log' TO 'D:\Data\adv.ldf';
원래 파일이 있는 경우 덮어쓰는 방법
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH REPLACE;
백업에 관련된 포스팅은 아래 url 을 참고해 주세요.