sp_detach_db, sp_attach_db -- MSSQL



데이터베이스 분리하기(sp_detach_db)

데이터베이스를 분리하려면 데이터베이스에 연결된 사용자가 없어야 한다.
현재 연결된 사용자가 있다면 아래의 명령어를 사용하여 SINGLE_USER 모드로 변경 할 수 있다.

ALTER DATABASE pubs SET SINGLE_USER [WITH NO_WAIT]

데이터베이스를 분리시키면
1. 데이터베이스에 불완전한 트랜잭션이 없게 된다.
2. 메모리에 이 데이터베이스의 변경된 페이지가 없게 된다.

위의 조건이 충족되지 않으면 분리작업은 실패하게 된다.

데이터베이스를 분리하는 명령어는 다음과 같다.

exec sp_detach_db 'pubs', 'false'

두번째 인자를 'true'로 주면 UPDATE STATISTICS를 건너뜁니다. 기본값은 NULL이다.

데이터베이스가 분리되면
1. master..sysdatabases에서 항목이 제거된다.
2. 분리된 데이터베이스의 파일은 존재하지만, 운영체제는 닫힌 파일로 인식한다. 때문에 복사, 이동, 삭제가 가능한 상태가 된다.


데이터베이스 다시 붙이기(sp_attach_db)

분리된 데이터베이스는 아래 명령어를 사용하여 다시 붙일 수 있다.

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\MSSQL\Data\pubs_log.ldf'


추가정보
1. 명시적 sp_detach_db 작업을 사용하여 서버에서 이전에 분리된 DB만이 sp_attach_db를 사용할 수 있다.
2. 최대 16개까지 파일을 지정 할 수 있다.
3. 17개 이상의 파일을 지정해야 하는 경우에는 FOR ATTACH 절이 있는 CREATE DATABASE를 사용한다.
4. 데이터베이스가 분리된 서버 외의 서버에 데이터베이스를 첨부한 경우 및 분리한 데이터베이스를 복제할 수 있는 경우에는 sp_removedbreplication을 실행하여 데이터베이스에서 복제본을 제거해야 한다.

출처 : http://cafe.naver.com/ilovedata.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=300


덧글

댓글 입력 영역