사용자 데이터베이스 이동
업데이트: 2005년 12월 5일
SQL Server 2005에서는 ALTER DATABASE 문의 FILENAME 절에 새 파일 위치를 지정하여 사용자 데이터베이스의 데이터, 로그 및 전체 텍스트 카탈로그 파일을 새 위치로 이동할 수 있습니다. 이 방법은 동일한 SQL Server 인스턴스 내에서 데이터베이스 파일을 이동하는 경우에 적용됩니다. 데이터베이스를 다른 SQL Server 인스턴스나 다른 서버로 이동하려면 백업 및 복원 작업이나 분리/연결 작업을 사용합니다.
이 항목의 절차를 사용하려면 데이터베이스 파일의 논리적 이름이 필요합니다. 논리적 파일 이름을 구하려면 sys.master_files 카탈로그 뷰의 name 열을 쿼리합니다.
[!참고] 데이터베이스를 다른 서버 인스턴스로 이동하는 경우 사용자와 응용 프로그램에 일관된 환경을 제공하려면 데이터베이스의 일부 또는 모든 메타데이터를 다시 만들어야 할 수도 있습니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리를 참조하십시오.
계획된 재배치 절차
계획된 재배치의 일부로 데이터 또는 로그 파일을 이동하려면 다음 단계를 따릅니다.
다음 문을 실행합니다.
ALTER DATABASE database_name SET OFFLINE
파일을 새 위치로 이동합니다.
이동한 각 파일에 대해 다음 문을 실행합니다.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' )
다음 문을 실행합니다.
ALTER DATABASE database_name SET ONLINE
다음 쿼리를 실행하여 파일 변경 내용을 확인합니다.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
예약된 디스크 유지 관리를 위한 재배치
예약된 디스크 유지 관리 프로세스의 일부로 파일을 재배치하려면 다음 단계를 따릅니다.
이동할 각 파일에 대해 다음 문을 실행합니다.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
SQL Server 인스턴스를 중지하거나 시스템을 종료하여 유지 관리를 수행합니다. 자세한 내용은 서비스 중지를 참조하십시오.
파일을 새 위치로 이동합니다.
SQL Server 인스턴스나 서버를 다시 시작합니다. 자세한 내용은 서비스 시작 및 다시 시작을 참조하십시오.
다음 쿼리를 실행하여 파일 변경 내용을 확인합니다.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
오류 복구 절차
하드웨어 오류로 인해 파일을 이동해야 하는 경우 다음 단계에 따라 파일을 새 위치에 재배치합니다.
중요: |
---|
데이터베이스가 주의 대상 모드에 있거나 복구할 수 없는 상태여서 시작할 수 없는 경우에는 sysadmin 고정 역할의 멤버만 파일을 이동할 수 있습니다. |
SQL Server 인스턴스가 시작된 경우 중지합니다.
명령 프롬프트에서 다음 명령 중 하나를 입력하여 SQL Server 인스턴스를 마스터 전용 복구 모드로 시작합니다.
기본(MSSQLSERVER) 인스턴스의 경우 다음 명령을 실행합니다.
NET START MSSQLSERVER /f /T3608
명명된 인스턴스의 경우 다음 명령을 실행합니다.
NET START MSSQL$instancename /f /T3608
자세한 내용은 방법: SQL Server 인스턴스 시작(net 명령)을 참조하십시오.
이동할 각 파일에 대해 sqlcmd 명령 또는 SQL Server Management Studio를 사용하여 다음 문을 실행합니다.
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
sqlcmd 유틸리티 사용 방법은 sqlcmd 유틸리티 사용을 참조하십시오.
sqlcmd 유틸리티 또는 SQL Server Management Studio를 종료합니다.
SQL Server 인스턴스를 중지합니다.
파일을 새 위치로 이동합니다.
SQL Server 인스턴스를 시작합니다. 예를 들어 다음을 실행합니다.
NET START MSSQLSERVER
.다음 쿼리를 실행하여 파일 변경 내용을 확인합니다.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
전체 텍스트 카탈로그 이동
전체 텍스트 카탈로그를 이동하려면 다음 단계를 따릅니다. 새 카탈로그 위치를 지정할 때는 new_path/os_file_name
대신 new_path
만 지정합니다.
다음 문을 실행합니다.
ALTER DATABASE database_name SET OFFLINE
전체 텍스트 카탈로그를 새 위치로 이동합니다.
다음 문을 실행합니다. 여기서
logical
_name
은 sys.database_files의 name 열에 있는 값이며new
_path
는 카탈로그의 새 위치입니다.ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path')
다음 문을 실행합니다.
ALTER DATABASE database_name SET ONLINE
또는 CREATE DATABASE 문의 FOR ATTACH 절을 사용하여 전체 텍스트 카탈로그를 이동할 수 있습니다. 다음 예는 AdventureWorks
데이터베이스에 전체 텍스트 카탈로그를 만듭니다. 전체 텍스트 카탈로그를 새 위치로 이동하기 위해 AdventureWorks
데이터베이스가 분리되고 물리적으로 전체 텍스트 카탈로그가 새 위치로 이동됩니다. 그런 다음 전체 텍스트 카탈로그의 새 위치를 지정하여 데이터베이스가 연결됩니다.
USE AdventureWorks;
CREATE FULLTEXT CATALOG AdvWksFtCat AS DEFAULT;
GO
USE master;
GO
--Detach the AdventureWorks database.
sp_detach_db AdventureWorks;
GO
--Physically move the full-text catalog to the new location.
--Attach the AdventureWorks database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
예
다음 예에서는 계획된 재배치의 일부로 AdventureWorks
로그 파일을 새 위치로 이동합니다.
USE master;
GO
-- Return the logical file name.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
AND type_desc = N'LOG';
GO
ALTER DATABASE AdventureWorks SET OFFLINE;
GO
-- Physically move the file to a new location.
-- In the following statement, modify the path specified in FILENAME to
-- the new location of the file on your server.
ALTER DATABASE AdventureWorks
MODIFY FILE ( NAME = AdventureWorks_Log,
FILENAME = 'C:\NewLoc\AdventureWorks_Log.ldf');
GO
ALTER DATABASE AdventureWorks SET ONLINE;
GO
--Verify the new location.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
AND type_desc = N'LOG';
참고 항목
개념
데이터베이스 분리 및 연결
시스템 데이터베이스 이동
서비스 중지
관련 자료
ALTER DATABASE(Transact-SQL)
CREATE DATABASE(Transact-SQL)
데이터베이스 수정
데이터베이스 파일 이동
BACKUP(Transact-SQL)
RESTORE(Transact-SQL)
서비스 시작 및 다시 시작
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2005년 12월 5일 |
|