디스크를 증설하거나 다른 디스크로 데이터베이스를 이동해야하는 경우가 있다. 이런 필요성이 있는 경우는 대부분 데이터베이스에 데이터가 무척 빠른 속도로 증가하여 디스크의 공간이 부족한 경우가 대부분이다.
때문에 Export / Import 하기도 부담스럽고 또 귀찮기도 하다. 만약 중간에 에러가 나면… 큰일이기도 하고…
그렇기 때문에 데이터베이스의 물리적인 데이터파일을 이동시키는 것이 어찌보면 가장 빠르고 편한 방법이다.
이때는 다음과 같이 데이터베이스를 떼어내고 파일을 복사한 뒤 다시 붙이는 방법으로 진행하면 된다.
SQL엔터프라이브 매니저에서 새쿼리 창을 열고
(그 전에 데이터베이스를 사용하는 다른 서비스들을 종료한다.)
1. sp_detach_db 으로 데이터베이스를 분리시킨다.
USE master
EXEC sp_detach_db ‘데이터베이스이름’, ‘true’
SQL엔터프라이즈매니저에서 해당 데이터베이스가 사라진다.
하지만 실제로 데이터베이스 파일은 그대로 남아 있다.
2. C 드라이브에 있는 데이터베이스 파일을 D:\DATA\ 와 같이 원하는 곳으로
이동한다. (복사 혹은 CUT/PASTE)
3. sp_attach_db 를 이용하여 D드라이브(D:\DATA\)에 데이터베이스를 붙여준다.
만약 데이터베이스 명칭이 변경되면 데이터베이스를 사용하는 서비스들의 DB설정을
다시해주어야 하므로 변경하지 않는 것이 편하다.
EXEC sp_attach_db @dbname = N’데이터베이스이름’,
@filename1 = N’D:\DATA\데이터베이스파일이름.mdf’,
@filename2 = N’D:\DATA\로그파일이름.ldf’
4. DB를 사용하는 서비스를 재구동 한다.