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 입니다.
2. SQL Server 인스턴스를 중지합니다.
3. Master.mdf, master.ldf를 변경할 경로로 이동합니다.
4. SQL Server 인스턴스를 마스터 전용 복구 모드로 시작합니다.
매개 변수는 대/소문자를 구분하며, 오류가 발생할 경우 이벤트 로그를 확인해 보십시오.
기본(MSSQLSERVER) 인스턴스의 경우 다음 명령을 실행합니다.
위 명령 후 Single user 모드에서 SQL Server service 가 시작되므로 DB에 연결되는 다른 사용자(어플리케이션)가 없어야 합니다. 만약 다른 세션이 먼저 연결되면 DB에 연결할 수 없게 됩니다. 외부에서 유입되는 연결을 차단할 수 없다면 SQL Server 서비스 포트를 임의로 변경한 후 작업을 완료하고 다시 원래 상태로 변경하는 것도 방법이 되겠습니다.
5. SQLCMD 연결을 통해 리소스 데이터베이스 파일을 새 위치에 일치하도록 파일 경로를 변경합니다.
6. mssqlsystemresource.mdf 및 mssqlsystemresource.ldf 파일을 새 위치로 이동합니다.
7. 리소스 데이터베이스를 읽기 전용으로 설정합니다.
8. Sqlcmd 유틸리티를 종료합니다.
9. SQL Server 인스턴스를 중지한 뒤, 다시 시작합니다.
10. 정상적으로 변경되었는지 아래 쿼리를 통해 확인할 수 있습니다.
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
[시나리오]
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
-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
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');
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