2007~2011/SQL Server2008. 8. 2. 09:21
SQL Server 2005 환경에서 시스템 데이터베이스(MASTER 및 리소스 데이터베이스)를 이동하는 방법을 정리하였습니다.

 
[시나리오]

1. 변경 전 파일 경로
   D:\99.Temp\master.mdf
   D:\99.Temp\mastlog.ldf
   D:\99.Temp\mssqlsystemresource.mdf
   D:\99.Temp\mssqlsystemresource.ldf
 
2. 변경 후 파일 경로
   C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\master.mdf
   C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mastlog.ldf
   C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.mdf
   C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.ldf


 
[작업절차]
 
1. SQL Server Configuration Manager - SQL Server 2005 서비스 - 해당 인스턴스 - 속성 - 고급 -
    시작 매개 변수 변경
    Master 데이터베이스의 데이터와 로그가 저장될 경로로 시작 매개변수를 변경합니다.
    데이터 파일 매개 변수는 -d, 에러 로그는 -e, 로그 파일의 값은 -l 입니다.
 
    -dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\master.mdf;
    -eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;
    -lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mastlog.ldf

사용자 삽입 이미지



2. SQL Server 인스턴스를 중지합니다.
 
3. Master.mdf, master.ldf를 변경할 경로로 이동합니다.
 
4. SQL Server 인스턴스를 마스터 전용 복구 모드로 시작합니다.
   매개 변수는 대/소문자를 구분하며, 오류가 발생할 경우 이벤트 로그를 확인해 보십시오.
   기본(MSSQLSERVER) 인스턴스의 경우 다음 명령을 실행합니다.
 
   NET START MSSQLSERVER /f /T3608

위 명령 후 Single user 모드에서 SQL Server service 가 시작되므로 DB에 연결되는 다른 사용자(어플리케이션)가 없어야 합니다. 만약 다른 세션이 먼저 연결되면 DB에 연결할 수 없게 됩니다. 외부에서 유입되는 연결을 차단할 수 없다면 SQL Server 서비스 포트를 임의로 변경한 후 작업을 완료하고 다시 원래 상태로 변경하는 것도 방법이 되겠습니다.

 
5. SQLCMD 연결을 통해 리소스 데이터베이스 파일을 새 위치에 일치하도록 파일 경로를 변경합니다.
 
   ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME= 'C:\Program
   Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.mdf');
   GO

   ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME= 'C:\Program
   Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.ldf');
   GO


사용자 삽입 이미지


6. mssqlsystemresource.mdf 및 mssqlsystemresource.ldf 파일을 새 위치로 이동합니다.
 
7. 리소스 데이터베이스를 읽기 전용으로 설정합니다.
  
   ALTER DATABASE mssqlsystemresource SET READ_ONLY;

 
8. Sqlcmd 유틸리티를 종료합니다.
 
9. SQL Server  인스턴스를 중지한 뒤, 다시 시작합니다.
 
10. 정상적으로 변경되었는지 아래 쿼리를 통해 확인할 수 있습니다.
 
   SELECT name, physical_name AS CurrentLocation, state_desc
   FROM sys.master_files
   WHERE database_id = DB_ID('master');

  
name      CurrentLocation                                                                             state_desc
------------------------------------------------------------------------------------------------------------
master    C:\Program Files\Microsoft SQL Server\...\Data\master.mdf       ONLINE
mastlog   C:\Program Files\Microsoft SQL Server\...\Data\mastlog.ldf       ONLINE
 
(2개 행 적용됨) 


[참고자료]
시스템 데이터베이스 이동
http://technet.microsoft.com/ko-kr/library/ms345408.aspx


작성자 :  Lai Go /  작성일자 : 2008.08.01
Posted by Lai Go