@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
sp_attach_db
서버에 데이터베이스를 첨부합니다.
구문
sp_attach_db [ @dbname = ] 'dbname' ,
[ @filename1 = ] 'filename_n' [ ,...16 ]
인수
[@dbname =] 'dbname'
서버에 첨부될 데이터베이스의 이름입니다. 이 이름은 고유해야 합니다. dbname은 sysname이며 기본값은 NULL입니다.
[@filename1 =] 'filename_n'
데이터베이스 파일 경로를 포함한 물리적 이름입니다. filename_n은 nvarchar(260)이며 기본값은 NULL입니다. 16개까지 파일 이름을 지정할 수 있습니다. 매개 변수 이름은 @filename1에서 시작하여 @filename16까지 증가합니다. 파일 이름 목록은 데이터베이스의 다른 파일을 지정하는 시스템 테이블이 들어 있는 주 파일을 적어도 하나 이상 포함해야 합니다. 또한 목록은 데이터베이스가 분리된 다음 이동된 모든 파일을 포함해야 합니다.
반환 코드 값
0(성공) 또는 1(실패)
결과 집합
없음
비고
명시적 sp_detach_db 작업을 사용하여 서버에서 이전에 분리된 데이터베이스만이 sp_attach_db를 사용할 수 있습니다.17개 이상의 파일을 지정해야 하는 경우에는 FOR ATTACH 절이 있는 CREATE DATABASE를 사용하십시오.
데이터베이스가 분리된 서버 외의 서버에 데이터베이스를 첨부한 경우 및 분리한 데이터베이스를 복제할 수 있는 경우, sp_removedbreplication을 실행하여 데이터베이스에서 복제본을 제거해야 합니다.
사용 권한
sysadmin 고정 서버 역할의 구성원만이 이 프로시저를 실행할 수 있습니다
두번째로는 Live DB에서 주로 사용하는 방법인데요.
중요한 DB일 수록 자주 Full Backup과 Transaction Log Backup 등으로 백업을 받습니다. (회사 정책에 따라 달라요)
이를 이용해서 간단하게 복사가 가능합니다.
먼저 해당 DB의 백업 파일(주로 *.bak)을 대상 DB로 복사합니다.
그리고 Restore(복원)하는 원리로 DB를 생성하게 됩니다.
일단 백업 받은 파일(*.bak)의 내용을 확인합니다.
--백업세트에포함된파일목록확인
RESTORE FILELISTONLY
FROMDISK = 'd:\Backup\MESDB.bak'
해당 쿼리를 돌리면 실제 백업받은 DB의 mdf와 ldf 명 등을 확인 할 수 있습니다.
이를 바탕으로 아래 처럼 복원을 시작합니다.
--풀백업복원
RESTOREDATABASE MESDB
FROMDISK = 'd:\Backup\MESDB.bak'
WITH
NORECOVERY,
MOVE'MESDB' TO 'd:\test\MESDB.mdf',
MOVE'MESDB_log' TO 'd:\test\MESDB_log.ldf',
stats= 1
GO
--로그백업복원
RESTORELOG MESDB
FROMDISK = 'd:\Backup\MESDB_log.trn'











최근 덧글