2011. 12. 14. 09:47

저번에 디비 이관작업하다가 대박 사고가 나니

"역시 디비옮길땐 파일을 옮기는것 만큼 좋은게 없구나"

라는 생각을 더 욱 하고 있습니다 ㅜㅡ

 

 

1. 파일 정보 확인

'.bak'로 통빽업을 했다면 안에 'mdf'파일과 'ldf'파일이 그대로 있으니 너무 걱정하지 않으셔도 됩니다.

(하지만 증분빽업된거라면? 명복을 ㅎㅎㅎ)

 

복원하기전에 아래 명령을 사용하여 백업파일의 정보를 확인해야 합니다.

--1) DB 백업 파일 정보
restore filelistonly from disk='[경로]'
--mdf와 ldf파일의 이름을 확인한다.

 

 

2. 복구

위에서 얻은 정보를 이용해 아래 명령을 실행합니다.

-- 2-1) DB 복구
restore database [넣을DB 이름] from disk='[경로]'
with move '[1)에서 확인한 mdf이름]' to '[저장될 mdf파일의 경로]',
move '[1)에서 확인한 ldf이름]' to '[저장될 ldf파일의 경로]'
--넣을DB 이름은 DB에 있으면 안된다.
--절대 미리 생성하면 안된다는 이야기

-- 2-2) .bak 파일이 여러개인경우
Restore Database [넣을DB 이름] From 
Disk='[저장될 파일의 경로1]'
, Disk='[저장될 파일의 경로1]'

 

백업된 파일의 크기에 비래해서 시간이 걸립니다.

복원이 완료되면 '2)'에서 넣은 DB이름으로 DB가 생성되있습니다.

 

만약 mdf파일이나 ldf파일을 이동시키기려면 연결을 끊어주고 하셔야 합니다.

오프라인. 잊지 마세요~

 

 

3. 샘플

샘플을 통해 위 코드를 어떻게 사용하는지 알아봅시다.


--DB 정보 확인
restore filelistonly from disk='D:\test_server.bak'

--DB 복구
restore database test_server from disk='D:\test_server.bak'
with move 'server_Data' to 'D:\test_server.mdf',
move 'server_Log' to 'D:\test_server_log.ldf'

 

 

만약 파일이 여러개로 분할 되있다면

Restore Database db_Test From 
Disk='D:\test_DB\test_2012_09_15_1.bak'
, Disk='D:\test_DB\test_2012_09_15_2.bak'

 

 

마무리

사실 그냥 쉬운걸로만 따지자면 파일을 통으로 옮기는게 가장 쉽습니다.

필요에 따라서 쓰는것이죠 ㅎㅎㅎ