MS-SQL2012. 6. 4. 14:04
반응형

시스템 데이터베이스 이동

SQL Server 2008 R2
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

이 항목에서는 SQL Server에서 시스템 데이터베이스를 이동하는 방법에 대해 설명합니다. 시스템 데이터베이스 이동은 다음과 같은 경우에 유용할 수 있습니다.

  • 오류 복구. 하드웨어 오류로 인해 데이터베이스가 주의 대상 모드에 있거나 종료된 경우를 예로 들 수 있습니다.

  • 계획된 재배치

  • 예약된 디스크 유지 관리를 위한 재배치

항목 내용

시작하기 전에

계획된 재배치 및 예약된 디스크 유지 관리 절차

오류 복구 절차

master 데이터베이스 이동 절차

후속 작업: 모든 시스템 데이터베이스 이동 후

tempdb 데이터베이스 이동 예

이 항목에서 정의된 절차를 구현하기 전에 다음 정보를 검토하십시오.

다음 절차는 동일한 SQL Server 인스턴스 내에서 데이터베이스 파일을 이동하는 경우에 적용됩니다. 데이터베이스를 다른 SQL Server 인스턴스나 다른 서버로 이동하려면 백업 및 복원 작업이나 분리/연결 작업을 사용합니다.

리소스 데이터베이스를 이동할 수는 없습니다.

이 항목의 절차를 사용하려면 데이터베이스 파일의 논리적 이름이 필요합니다. 논리적 파일 이름을 가져오려면 sys.master_files 카탈로그 뷰의 name 열을 쿼리합니다.

중요 정보 중요

시스템 데이터베이스를 이동한 다음 나중에 master 데이터베이스를 다시 작성하는 경우 다시 작성 작업에서 모든 시스템 데이터베이스를 기본 위치에 설치하기 때문에 시스템 데이터베이스를 다시 이동해야 합니다. master 데이터베이스를 다시 작성하는 방법은 방법: 명령 프롬프트에서 SQL Server 2008 R2 설치의 "시스템 데이터베이스 및 레지스트리 다시 작성"을 참조하십시오.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [맨 위]

계획된 재배치 또는 예약된 유지 관리 작업의 일부로 시스템 데이터베이스 데이터나 로그 파일을 이동하려면 다음 단계를 따릅니다. 이 절차는 master 및 Resource 데이터베이스를 제외한 모든 시스템 데이터베이스에 적용됩니다.

  1. 이동할 각 파일에 대해 다음 문을 실행합니다.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
    
  2. SQL Server 인스턴스를 중지하거나 시스템을 종료하여 유지 관리를 수행합니다. 자세한 내용은 서비스 중지를 참조하십시오.

  3. 파일을 새 위치로 이동합니다.

  4. SQL Server 인스턴스나 서버를 다시 시작합니다. 자세한 내용은 서비스 시작 및 다시 시작을 참조하십시오.

  5. 다음 쿼리를 실행하여 파일 변경 내용을 확인합니다.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

msdb 데이터베이스가 이동되고 SQL Server 인스턴스에서 데이터베이스 메일을 구성한 경우 다음 단계를 추가로 완료합니다.

  1. 다음 쿼리를 실행하여 msdb 데이터베이스에 대해 Service Broker가 설정되어 있는지 확인합니다.

    SELECT is_broker_enabled 
    FROM sys.databases
    WHERE name = N'msdb';
    

    Service Broker 설정에 대한 자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하십시오.

  2. 테스트 메일을 보내 데이터베이스 메일이 작동하는지 확인합니다. 자세한 내용은 데이터베이스 메일 문제 해결을 참조하십시오.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [맨 위]

하드웨어 오류로 인해 파일을 이동해야 하는 경우 다음 단계에 따라 파일을 새 위치에 재배치합니다. 이 절차는 master 및 Resource 데이터베이스를 제외한 모든 시스템 데이터베이스에 적용됩니다.

중요 정보 중요

데이터베이스가 주의 대상 모드에 있거나 복구할 수 없는 상태여서 시작할 수 없는 경우에는 sysadmin 고정 역할의 멤버만 파일을 이동할 수 있습니다.

  1. SQL Server 인스턴스가 시작된 경우 중지합니다.

  2. 명령 프롬프트에서 다음 명령 중 하나를 입력하여 SQL Server 인스턴스를 마스터 전용 복구 모드로 시작합니다. 이러한 명령에 지정된 매개 변수는 대/소문자를 구분합니다. 표시된 대로 매개 변수를 지정하지 않으면 명령이 실패합니다.

    • 기본(MSSQLSERVER) 인스턴스의 경우 다음 명령을 실행합니다.

      NET START MSSQLSERVER /f /T3608
      
    • 명명된 인스턴스의 경우 다음 명령을 실행합니다.

      NET START MSSQL$instancename /f /T3608
      

    자세한 내용은 방법: SQL Server 인스턴스 시작(net 명령)을 참조하십시오.

  3. 이동할 각 파일에 대해 sqlcmd 명령 또는 SQL Server Management Studio를 사용하여 다음 문을 실행합니다.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    

    sqlcmd 유틸리티의 사용 방법은 sqlcmd 유틸리티 사용을 참조하십시오.

  4. sqlcmd 유틸리티 또는 SQL Server Management Studio를 종료합니다.

  5. SQL Server 인스턴스를 중지합니다. 예를 들어 NET STOP MSSQLSERVER를 실행합니다.

  6. 파일을 새 위치로 이동합니다.

  7. SQL Server 인스턴스를 다시 시작합니다. 예를 들어 NET START MSSQLSERVER를 실행합니다.

  8. 다음 쿼리를 실행하여 파일 변경 내용을 확인합니다.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [맨 위]

master 데이터베이스를 이동하려면 다음 단계를 수행합니다.

  1. 시작 메뉴에서 모든 프로그램, Microsoft SQL Server, 구성 도구를 차례로 가리킨 다음 SQL Server 구성 관리자를 클릭합니다.

  2. SQL Server 서비스 노드에서 SQL Server 인스턴스(예: SQL Server (MSSQLSERVER))를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

  3. SQL Server( instance_name ) 속성 대화 상자에서 고급 탭을 클릭합니다.

  4. 시작 매개 변수 값을 편집하여 master 데이터베이스 데이터와 로그 파일에 계획된 위치를 가리키고 확인을 클릭합니다. 필요에 따라 오류 로그 파일을 이동할 수도 있습니다.

    데이터 파일의 매개 변수 값은 -d 매개 변수 뒤에 와야 하고 로그 파일의 값은 -l 매개 변수 뒤에 와야 합니다. 다음 예에서는 master 데이터와 로그 파일의 기본 위치에 대한 매개 변수 값을 보여 줍니다.

    -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf
    -lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    DATA\mastlog.ldf
    

    master 데이터와 로그 파일에 계획된 재배치가 E:\SQLData인 경우 매개 변수 값은 다음과 같이 변경됩니다.

    -dE:\SQLData\master.mdf
    -lE:\SQLData\mastlog.ldf
    
  5. 인스턴스 이름을 마우스 오른쪽 단추로 클릭하고 중지를 선택하여 SQL Server 인스턴스를 중지합니다.

  6. master.mdf 및 mastlog.ldf 파일을 새 위치로 이동합니다.

  7. SQL Server 인스턴스를 다시 시작합니다.

  8. 다음 쿼리를 실행하여 master 데이터베이스에 대한 파일 변경 내용을 확인합니다.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO
    

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [맨 위]

모든 시스템 데이터베이스를 새 드라이브 또는 볼륨으로 이동했거나 다른 드라이브 문자를 사용하는 다른 서버에 이동한 경우 다음과 같이 업데이트하십시오.

  • SQL Server 에이전트 로그 경로를 변경합니다. 이 경로를 업데이트하지 않으면 SQL Server 에이전트가 시작되지 않습니다.

  • 데이터베이스 기본 위치를 변경합니다. 기본 위치로 지정한 드라이브 문자 및 경로가 존재하지 않을 경우 새 데이터베이스 만들기가 실패할 수 있습니다.

SQL Server 에이전트 로그 경로를 변경합니다.

  1. SQL Server Management Studio의 개체 탐색기에서 SQL Server 에이전트를 확장합니다.

  2. 오류 로그를 마우스 오른쪽 단추로 클릭한 다음 구성을 클릭합니다.

  3. SQL Server 에이전트 오류 로그 구성 대화 상자에서 SQLAGENT.OUT 파일의 새 위치를 지정합니다. 기본 위치는 C:\Program Files\Microsoft SQL Server\MSSQL10_50.<instance_name>\MSSQL\Log\입니다.

데이터베이스 기본 위치 변경

  1. SQL Server Management Studio의 개체 탐색기에서 SQL Server 서버를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  2. 서버 속성 대화 상자에서 데이터베이스 설정을 선택합니다.

  3. 데이터베이스 기본 위치에서 데이터 및 로그 파일의 새 위치를 찾습니다.

  4. 변경을 완료하려면 SQL Server 서비스를 중지한 후 시작합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [맨 위]

1. tempdb 데이터베이스 이동

다음 예에서는 계획된 재배치의 일부로 tempdb 데이터와 로그 파일을 새 위치로 이동합니다.

참고 참고

SQL Server 서비스를 시작할 때마다 tempdb가 다시 생성되므로 데이터와 로그 파일을 물리적으로 이동할 필요는 없습니다. 3단계에서 서비스를 다시 시작할 때 새 위치에 파일이 생성됩니다. 서비스를 다시 시작할 때까지는 tempdb에서 계속 기존 위치의 데이터와 로그 파일을 사용합니다. SQL Server 서비스를 다시 시작하면 이전 tempdb 데이터 및 로그 파일을 기존 위치에서 삭제할 수 있습니다.

  1. tempdb 데이터베이스의 논리적 파일 이름 및 디스크에서의 현재 위치를 확인합니다.

    SELECT name, physical_name AS CurrentLocation
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    GO
    
  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 = 'F:\SQLLog\templog.ldf');
    GO
    
  3. SQL Server 인스턴스를 중지한 후 다시 시작합니다.

  4. 파일 변경 내용을 확인합니다.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    
  5. 원래 위치에서 tempdb.mdftemplog.ldf 파일을 삭제합니다.

 

반응형
Posted by [PineTree]