본문 바로가기

MSSQL/Setting

배포 데이터베이스 이동 시키기



얼마전에 IDC이전에 ISSUE가 있었습니다. 역삼 IDC 에서 목동 IDC 로 이전을 하는 것이었습니다.

역삼 IDC 의 Database 를 백업을 받고 목동 IDC의 임시 서버에 Setting를 하고 그 후에 리얼서버가 오면 임시 서버에서 다시 리얼서버로 Setting하는 플랜이였습니다.

하지만, 여기에서 커뮤니케이션 미스로 인해 리얼서버가 포맷이 되여 버렸지만, System Database 및 user Database는 이미 임시서버에 Setting이 되어서 사용중이였기에 문제가 되지는 않았습니다. 문제는 시스템 데이터베이스에 남아있는 배포 데이터베이스였습니다.

다음 포스트에는 복제 데이터베이스가 비 정상적으로 종료 또는 .mdf 와 .ldf가 없을때 배포해제와 게시자해제를 포스팅 하겠습니다만, 이번 포스팅에서는 복제의 배포 데이터베이스를 서버 이전에 이동시키는 방법을 적어 보겠습니다.

-- 먼저 배포 데이터베이스를 싱글모드로 바꿉니다.
-- WITH ROLLBACK AFTER 10; 이라는 구문은 10초가 지나도 커밋되지 않은 트랜잭션은 롤백을 하겠다는 의미입니다.
-- 사실 [배포] 데이터베이스를 싱글모드로 바꾸는데에는 필요가 없습니다.
-- 다른 사용자 데이터베이스를 싱글모드로 바꿀때 유용합니다.

ALTER DATABASE [배포] SET SINGLE_USER WITH ROLLBACK AFTER 10;


-- [배포] 데이터베이스를 오프라인으로 만듭니다.
ALTER DATABASE [배포] SET OFFLINE;


-- [배포] 데이터베이스의 .mdf 와 .ndf의 경로를 수정 합니다.
-- 이는 시스템 카탈로그 뷰를 수정하는 것이지 물리적 파일을 이동시키는 것이 아닙니다.

ALTER DATABASE [배포] MODIFY FILE(
    NAME = 배포
  , FILENAME = 'C:\배포.MDF'
)
ALTER DATABASE [배포] MODIFY FILE(
    NAME = 배포
  , FILENAME = 'C:\배포_log.LDF'
)


-- 이제 배포.MDF와 .LDF의 물리적 파일을 위에 경로에 이동시킵니다.
-- 이동 할때는 Ctrl+C, Ctrl+V 를 하셔도 무방합니다.
-- 그 후에 오프라인으로 있는 데이터베이스를 온라인으로 바꿉니다.

ALTER DATABASE [배포] SET ONLINE;


-- 해당 데이터베이스를 SSMS에서 보시면, 단일사용자 라고 표시가 될것입니다.
-- 이는 처음에 SINGLE_USER 로 하였기 때문입니다.
-- 다시 MULTI_USER로 바꾸시면 됩니다.

ALTER DATABASE [배포] SET MULTI_USER;


이렇게, 하시고 복제모니터를 사용하여서 제대로 작동 되는가 확인 하시면 됩니다.
해당 방법은 사용자 데이터베이스를 이동시키는 것에도 적합 합니다.


P.S : 만약, DB SERVER를 이동하게 될때는 배포 데이터베이스도 함께 이동시키는 것이 바람직합니다.



----------------------------------------------------------
DBA 이승연
GRAVITY co., Ltd 
Global Business Dept / Tech Support

http://www.gravity.co.kr
http://www.ddoung2.com
----------------------------------------------------------

'MSSQL > Setting' 카테고리의 다른 글

tempDB 에 관하여  (0) 2009.05.11
SQL 2005 SSIS FTP을 이용한 백업 파일 전송  (2) 2009.05.08