출처 : http://www.devpia.com

SQL Server 7.0이 C:\Mssql7에 설치되어 있고 모든 데이터베이스 및 로그 파일도
C:\Mssql7\Data에 설치되어 있다고 가정하고, 모든 데이터베이스의 데이터 및 로그 파
일을 E:\Sqldata로 이동합니다.

먼저 모든 데이터베이스, 특히 master 데이터베이스의 백업을 현재 위치에 만듭니다.

사용자에게는 시스템 관리자(sa) 권한이 있어야 합니다 .

데이터베이스의 모든 데이터 파일 및 로그 파일의 이름과 현재 위치를 알고 있어야 합
니다.

참고: sp_helpfile 저장 프로시저(Stored Procedure)로 데이터베이스에서 사용되는 모
든 파일의 이름과 현재 위치를 결정할 수 있습니다.

use
go
sp_helpfile
go

이동하려는 데이터베이스에 대해 단독 액세스 권한이 있어야 합니다.

이 과정 중에 문제가 발생하고 이동한 데이터베이스를 액세스할 수 없거나 또는 SQL
Server를 시작할 수 없으면 SQL Server 오류 로그 및 SQL Server 7.0 온라인 설명서에
서 발생한 오류의 정보를 확인하십시오.


1. 사용자 데이터베이스 이동
Mydb.mdf 데이터 파일과 Mydblog.ldf 로그 파일이 있는 mydb 데이터베이스를 이동
합니다. 이동하려는 데이터베이스에 추가 데이터 또는 로그 파일이 있으면
sp_attach_db 저장 프로시저(Stored Procedure)에 모든 추가 파일의 이름을 쉼표로 구
분하여 명시하십시오. sp_detach_db 프로시저는 데이터베이스에 들어 있는 파일을 나
열하지 않으므로 데이터베이스에 포함되는 파일의 수가 문제가 되지 않습니다.
데이터베이스를 다음과 같이 분리합니다.

use master
go
sp_detach_db "mydb"
go

다음에는 현재 위치(C:\Mssql7\Data)의 데이터 및 로그 파일을 새 위치(E:\Sqldata)
에 복사합니다.

다음과 같이 새 위치로 이동한 파일에 해당하는 데이터베이스를 부착(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 열 값은 새 위치를 반영해야 합니다.

2. MSDB, Pubs 및 Northwind 이동
사용자 데이터베이스를 이동시킬 때 동일한 프로시저를 수행하십시오.MSDB의 경
우 SQL Server 에이전트는 현재 실행되지 않아야 합니다. 그렇지 않으면
sp_detach_db 저장 프로시저(Stored Procedure)는 다음 메시지와 함께 실패합니다.

Server:Msg 3702, Level 16, State 1, Line 0
Cannot drop the database "msdb" because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system
administrator.

3. 마스터 데이터베이스의 이동
SQL Server Enterprise Manager(엔터프라이즈 관리자)에 있는 마스터 데이터 및
로그 파일의 경로를 변경합니다.

참고 : 여기서 오류 로그의 위치도 선택적으로 변경할 수 있습니다.

Enterprise Manager(엔터프라이즈 관리자)에 있는 SQL Server를 마우스 오른쪽 단추
로 누르고 바로 가기 메뉴의 Properties를 누릅니다.

Startup Parameters 단추를 누르면 다음 항목을 볼 수 있습니다.
-dC:\MSSQL7\data\master.mdf
-eC:\MSSQL7\log\ErrorLog
-lC:\MSSQL7\data\mastlog.ldf

-d는 마스터 데이터베이스 데이터 파일의 정식 경로입니다.

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

-l는 마스터 데이터베이스 로그 파일의 정식 경로입니다.

이러한 값을 다음과 같이 변경합니다.

Master.mdf 및 Mastlog.ldf 파일에 대한 현재 항목을 제거합니다.

새 위치를 지정하는 새 항목을 추가합니다.

-dE:\SQLDATA\master.mdf
-lE:\SQLDATA\mastlog.ldf

SQL Server를 중지합니다.

Master.mdf 및 Mastlog.ldf 파일을 새 위치(E:\Sqldata)에 복사합니다.

SQL Server를 다시 시작합니다.

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

참고 : 이 때 사용자 데이터베이스를 액세스할 수 없습니다. 이 추적 플래그(Trace
Flag)를 사용하는 중에는 다음 단계 외의 작업은 수행하지 말아야 합니다. To add
trace flag 3608 as a SQL Server startup parameter, perform the following steps:
In SQL Server Enterprise Manager, right-click the server name and click
Properties on the shortcut menu.

On the General tab, click Startup Parameters.

Add a new parameter as -T3608.

3608 추적(Trace) 플래그를 추가한 후 다음 단계를 수행합니다.
SQL Server를 중지하고 다시 시작합니다.

다음과 같이 model 데이터베이스를 분리합니다.

use master
go
sp_detach_db "model"
go

C:\Mssql7\Data에서 E:\Sqldata로 Model.mdf 및 Modellog.ldf를 이동합니다.

다음과 같이 model 데이터베이스를 다시 부착합니다.

use master
go
sp_attach_db "model","E:\Sqldata\model.mdf","E:\Sqldata\modellog.ldf"
go

Enterprise Manager(엔터프라이즈 관리자)의 시작 매개 변수 상자에서 _T3608 추적 플
래그(Trace Flag)를 제거합니다.

SQL Server를 중지하고 다시 시작합니다.

sp_helpfile을 사용하여 새 위치에 파일이 제대로 이동되었는지를 확인할 수 있습니
다.
use model
go
sp_helpfile
go

5. Tempdb 이동
ALTER DATABASE 문을 사용하여 tempdb 파일을 이동할 수 있습니다.
다음과 같이 sp_helpfile을 사용하여 tempdb 데이터베이스에 대한 논리 파일 이름을
알아냅니다.

use tempdb
go
sp_helpfile
go

다음과 같이 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

변경 내용을 확인하는 다음 메시지가 표시되어야 합니다.
File "tempdev" modified in sysaltfiles. Delete old file after restarting SQL
Server.

File "templog" modified in sysaltfiles. Delete old file after restarting SQL
Server.
tempdb에서 sp_helpfile을 사용하면 SQL Server를 다시 시작할 때까지는 이러한 변경
내용을 확인할 수 없습니다.

SQL Server를 중지하고 다시 시작합니다.

이상이 DB를 새로운 위치로 옮기는 작업이었습니다
2005/06/15 13:49 2005/06/15 13:49

트랙백 주소 :: http://thinkit.or.kr/database/trackback/152