데이터베이스 복원(카피)

유지보수중인 서비스의 요청사항이 들어왔습니다.

서비스의 장기 미 접속 유저에 대한 잠금설정 기능추가가 필요하다는 겁니다.

일사천리로 진행되나 싶더니.. 작업 중.. 손가락이 미끄러져서 잠금값을 바꾼다는게 그만 삭제값을 True로 바꿔버렸습니다!! 히힛!

뭐 일반 유저 데이터면 큰 문제일테지만 장기 미 접속 유저 아니겠습니까?
매일 데이터를 백업하고 있었기 때문에 백업한 DB를 다른 이름으로 복구해서 해당 값들을 원상복구하면 되겠구나~ 하는 가벼운 생각으로 복구 작업을 시작했습니다.

MSSQL을 사용하기 때문에 GUI에서 작업하는 경우가 많아서 SQL Server Management Studio에서 복원을 시작했는데 복구가 잘 되지 않습니다!

정상적인 .BAK파일 일텐데?

오류 번호 : 3154

'백업 세트에 기존 'DB명' 데이터베이스가 아닌 데이터베이스의 백업이 있습니다'

위와 같은 오류를 발생 시키는 겁니다. 뭐 이것저것 해보다 결국 아래 명령어를 사용하여 복구했습니다!

DB 복원

아래 명령어로 해당 백업파일 복구 시 필요한 값을 확인합니다.(mdf, mdl)

restore filelistonly from disk = 'D:\DB_Backup\dbTemp_20161027.bak'

여기서 조회 한 mdf data와 ldf 로그파일을 아래서 써줍니다.

원본 - dbTemp
복원(카피)할 DB명 - dbTemp_full <- 데이터베이스를 미리 생성하지 않아도 됩니다.

Restore database dbTemp_full
from disk = 'D:\DB_Backup\dbTemp_20161027.BAK' 
with move 'dbTemp' to 'D:\DB_Backup\dbTemp_full.mdf', 
move 'dbTemp_log' to 'D:\DB_Backup\dbTemp_full_log.ldf'

자 이제 dbTemp의 Bakup 데이터가 dbTemp_full로 생성되신 걸 확인 하실 수 있습니다!

DB 백업

BACKUP DATABASE [DB_Name] TO DISK='D:\db_backup\dbTemp_20161027.bak'

백업은 위 명령어로 하실 수 있습니다.
백업복원 포스트라면 백업먼저 알려줘야 하지 않느냐? 하시겠지만 복원 관련해서 작성하다가 추가 하는 터라 뒤에 추가했습니다.

백업을 잘해놔야 이렇게 복원도 수월하게 하실 수 있으니 백업! 반드시 합시다.
물론 복원도 좋지만 다신 이런일 없게 정신 바짝 차리고 작업 해야겠습니다!!
(음 검색해서 이 포스트를 보시는 분들은 이미… 화이팅입니다.)