INF: 분리/연결(Detach/Attach)을 사용하여 새 위치로 SQL Server 데이터베이스 이동

기술 자료 번역 기술 자료 번역
기술 자료: 224071 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR224071
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 SQL Server 7.0 데이터베이스나 SQL Server 2000 데이터베이스의 데이터와 로그 파일의 위치를 변경하는 방법을 설명합니다.

추가 정보

일부 SQL Server 시스템 데이터베이스의 위치를 이동하는 방법은 사용자 데이터베이스의 위치를 이동하는 방법과 다릅니다. 시스템 데이터베이스의 위치를 이동하는 방법은 따로 설명됩니다.
참고: SQL Server 7.0 시스템 데이터베이스는 SQL Server 2000과 호환되지 않습니다. SQL Server 7.0 master, model, msdb 또는 배포 데이터베이스를 SQL Server 2000과 연결하지 마십시오.
이 문서에 나와 있는 모든 예제는 SQL Server가 D:\Mssql7 디렉터리에 설치되어 있고 모든 데이터베이스와 로그 파일은 기본 디렉터리 D:\Mssql7\Data에 있다고 가정합니다. 예제는 모든 데이터베이스의 데이터 및 로그 파일을 E:\Sqldata로 이동합니다.

전제 조건

  • 현재 위치의 모든 데이터베이스 특히 master 데이터베이스의 현재 백업을 만듭니다.
  • 사용자에게는 시스템 관리자(sa) 권한이 있어야 합니다 .
  • 데이터베이스의 모든 데이터 파일 및 로그 파일의 이름과 현재 위치를 알고 있어야 합니다.

    참고: sp_helpfile 저장 프로시저를 사용하면 데이터베이스에서 사용되는 모든 파일의 이름과 현재 위치를 확인할 수 있습니다.
    use <database_name>
    go
    sp_helpfile
    go
    					
  • 이동하려는 데이터베이스에 대해 단독 액세스 권한이 있어야 합니다. 이 과정 중에 문제가 발생하여 이동한 데이터베이스를 액세스할 수 없거나 SQL Server를 시작할 수 없으면 SQL Server 오류 로그 및 SQL Server 온라인 설명서에서 발생한 오류의 정보를 확인하십시오.

사용자 데이터베이스 이동

다음 예제는 Mydb.mdf 데이터 파일과 Mydblog.ldf 로그 파일이 있는 mydb 데이터베이스를 이동합니다. 이동하려는 데이터베이스에 그 외의 다른 데이터나 로그 파일이 있으면 sp_attach_db 저장 프로시저에 모든 추가 파일의 이름을 쉼표로 구분하여 명시하십시오. sp_detach_db 프로시저는 데이터베이스에 들어 있는 파일을 나열하지 않으므로 데이터베이스에 포함되는 파일의 수가 문제가 되지 않습니다.
  1. 데이터베이스를 다음과 같이 분리합니다.
       use master
       go
       sp_detach_db 'mydb'
       go
    					
  2. 다음에는 현재 위치(D:\Mssql7\Data)의 데이터 및 로그 파일을 새 위치(E:\Sqldata)에 복사합니다.
  3. 다음과 같이 새 위치로 이동한 파일에 해당하는 데이터베이스를 다시 연결(Re-attach)합니다.
      use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    					
    sp_helpfile를 사용하여 파일 위치가 변경되었는지 확인합니다.
       use mydb
       go
       sp_helpfile
       go
    					
    filename 열 값이 새 위치를 반영해야 합니다.

Pubs 및 Northwind 이동

사용자 데이터베이스를 이동시킬 때 동일한 프로시저를 수행하십시오.

MSDB 이동(SQL Server 7.0)

참고: 이 프로시저를 사용하여 msdbmodel 데이터베이스를 이동하면 model이 먼저 다시 연결되고 msdb가 그 다음에 다시 연결됩니다. msdb가 먼저 다시 연결되면 분리되어 model이 연결될 때까지 다시 연결되지 않습니다.
  1. SQL Server 에이전트는 현재 실행되지 않아야 합니다.
  2. 사용자 데이터베이스를 이동시킬 때 동일한 프로시저를 수행합니다.
참고: SQL Server 에이전트가 실행 중이면 아래와 같은 오류 메시지가 나타나고 sp_detach_db 저장 프로시저는 실패합니다.
서버: 메시지 3702, 수준 16, 상태 1, 줄 0
데이터베이스 'msdb'이(가) 현재 사용 중이어서 삭제할 수 없습니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

MSDB 데이터베이스 이동(SQL Server 2000)

참고: 이 프로시저를 사용하여 msdbmodel 데이터베이스를 이동하면 model이 먼저 다시 연결되고 msdb가 그 다음에 다시 연결됩니다. msdb가 먼저 다시 연결되면 분리되어 model이 연결될 때까지 다시 연결되지 않습니다.

SQL Server 2000에서는 시스템 데이터베이스를 sp_detach_db 저장 프로시저로 분리할 수 없습니다. 아래와 같은 메시지가 나타나고 sp_detach_db 'msdb' 실행은 실패합니다.
서버: 메시지 7940, 수준 16, 상태 1, 줄 1
시스템 데이터베이스 master, model, msdb 및 tempdb를 분리할 수 없습니다.
SQL Server 2000에서 MSDB 데이터베이스를 이동시키려면 다음과 같이 하십시오.
  1. SQL Server 엔터프라이즈 관리자에서 해당 서버 이름을 마우스 오른쪽 단추로 누르고 속성을 누릅니다.
  2. 일반 탭에서 시작 매개 변수를 누릅니다.
  3. 새 매개 변수로 "-T3608"(인용 부호 제외)을 추가합니다.
3608 추적 플래그를 추가한 후 다음과 같이 하십시오.
  1. SQL Server를 중지했다가 다시 시작합니다.
  2. SQL Server 에이전트는 현재 실행되지 않아야 합니다.
  3. msdb 데이터베이스를 다음과 같이 분리합니다.
    use master
    go
    sp_detach_db 'msdb'
    go
    					
  4. Msdbdata.mdf 파일과 Msdblog.ldf 파일을 현재 위치(D:\Mssql8\Data)에서 새 위치(E:\Mssql8\Data)로 이동시킵니다.
  5. 엔터프라이즈 관리자의 시작 매개 변수 상자에서 -T3608 추적 플래그를 제거합니다.
  6. SQL Server를 중지했다가 다시 시작합니다.
  7. msdb 데이터베이스를 다음과 같이 다시 연결합니다.
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
    참고 -T3608 추적 플래그를 사용해서 SQL Server를 시작하여 msdb 데이터베이스를 다시 연결하려고 하면 아래와 같은 오류가 발생합니다.
    서버: 메시지 615, 수준 21, 상태 1, 줄 1
    데이터베이스 테이블 ID 3, 이름 'model'을(를) 찾을 수 없습니다.

Master 데이터베이스의 이동

  1. SQL Server 엔터프라이즈 관리자에 있는 마스터 데이터 및 로그 파일의 경로를 변경합니다.

    참고: 여기서 오류 로그의 위치도 선택적으로 변경할 수 있습니다.
  2. 엔터프라이즈 관리자에서 SQL Server를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
  3. 시작 매개 변수 단추를 누르면 다음 항목이 나타납니다.
       -dD:\MSSQL7\data\master.mdf
       -eD:\MSSQL7\log\ErrorLog
       -lD:\MSSQL7\data\mastlog.ldf
    						
    -d는 master 데이터베이스 데이터 파일의 정식 경로입니다.

    -e는 오류 로그 파일의 정식 경로입니다.

    -l는 master 데이터베이스 로그 파일의 정식 경로입니다.
  4. 이러한 값을 다음과 같이 변경합니다.
    1. Master.mdf 및 Mastlog.ldf 파일에 대한 현재 항목을 제거합니다.
    2. 새 위치를 지정하는 새 항목을 추가합니다.
            -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
      						
  5. SQL Server를 중지합니다.
  6. Master.mdf 및 Mastlog.ldf 파일을 새 위치(E:\Sqldata)에 복사합니다.
  7. SQL Server를 다시 시작합니다.

Model 데이터베이스의 이동

model 데이터베이스를 이동하려면 SQL Server는 master 이외의 데이터베이스를 복구하지 않도록 3608 추적 플래그와 함께 시작되어야 합니다.

참고: 이 때 사용자 데이터베이스를 액세스할 수 없습니다. 이 추적 플래그를 사용하는 중에는 다음 단계 외의 작업은 수행하지 말아야 합니다. 3608 추적 플래그를 SQL Server 시작 매개 변수로서 추가하려면: 3608 추적(Trace) 플래그를 추가한 후 다음 단계를 수행합니다.
  1. SQL Server를 중지했다가 다시 시작합니다.
  2. model 데이터베이스를 다음과 같이 분리합니다.
       use master
       go
       sp_detach_db 'model'
       go
    					
  3. D:\Mssql7\Data에서 E:\Sqldata로 Model.mdf 및 Modellog.ldf를 이동합니다.
  4. model 데이터베이스를 다음과 같이 다시 연결합니다.
       use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
    					
  5. 엔터프라이즈 관리자의 시작 매개 변수 상자에서 -T3608 추적 플래그를 제거합니다.
  6. SQL Server를 중지했다가 다시 시작합니다. sp_helpfile을 사용하여 새 위치에 파일이 제대로 이동되었는지를 확인할 수 있습니다.
       use model
       go
       sp_helpfile
       go
    					

Tempdb 이동

ALTER DATABASE 문을 사용하여 tempdb 파일을 이동할 수 있습니다.
  1. sp_helpfile을 다음과 같이 사용하여 tempdb 데이터베이스의 논리 파일 이름을 알아냅니다.
    use tempdb
    go
    sp_helpfile
    go
    					
    각 파일의 논리 이름은 name 열에 나와 있습니다. 이 예제는 기본 파일 이름인 tempdevtemplog를 사용합니다.

  2. ALTER DATABASE 문을 사용하여 논리 파일 이름을 다음과 같이 지정합니다.
    use master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
    go
    					
    변경 내용을 확인하는 다음과 같은 메시지가 나타납니다.
    sysaltfiles에서 'tempdev' 파일이 수정되었습니다. SQL Server를 다시 시작한 후 오래된 파일을 삭제하십시오.

    sysaltfiles에서 'templog' 파일이 수정되었습니다. SQL Server를 다시 시작한 후 오래된 파일을 삭제하십시오.
  3. SQL Server를 다시 시작해야만 tempdb에서 sp_helpfile을 사용하여 이러한 변경 내용을 확인할 수 있습니다.
  4. SQL Server를 중지했다가 다시 시작합니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
274188 PRB: BOL의 분리된 사용자 문제 해결 항목이 불완전하다
246133 INF: SQL Server 7.0 및 SQL Server 2000 사이에 로그인 및 암호 전송
168001 PRB: 덤프 복원 후 사용자 로그온 및/또는 권한 오류

자세한 내용은 다음 서적을 참조하십시오.
Microsoft Corporation Microsoft SQL Server 7.0 System Administration Training Kit , Microsoft Press, 2001
Microsoft Corporation MCSE Training Kit: Microsoft SQL Server 2000 System Administration, Microsoft Press, 2001
Microsoft Corporation Microsoft SQL Server 2000 Resource Kit, Microsoft Press, 2001




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 224071 - 마지막 검토: 2013년 7월 16일 화요일 - 수정: 6.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
kbsqlmanagementtools kbinfo KB224071

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com