이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 데이터베이스를 새 위치로 복원하고 필요에 따라 SQL Server 2014에서 데이터베이스 이름을 바꾸는 방법을 설명합니다. 데이터베이스를 새 디렉터리 경로로 이동하거나 동일한 서버 인스턴스 또는 다른 서버 인스턴스에 데이터베이스의 복사본을 만들 수 있습니다.
이 항목에서
시작하기 전 주의 사항:
다음을 사용하여 데이터베이스를 새 위치로 복원하고 필요에 따라 데이터베이스 이름을 바꾸려면 다음을 사용합니다.
시작하기 전에
한계 및 제한사항
- 이 작업을 수행하려면 복원될 데이터베이스를 현재 사용하고 있는 사람이 전체 데이터베이스 백업을 복원하는 시스템 관리자뿐이어야 합니다.
필수 조건
- 전체 복구 모델 또는 대량 로그 복구 모델의 경우 데이터베이스를 복원하려면 먼저 활성 트랜잭션 로그(비상 로그라고도 함)를 백업해야 합니다. 자세한 내용은 트랜잭션 로그 백업(SQL Server)을 참조하세요.
권장 사항
암호화된 데이터베이스를 복원하려면 데이터베이스를 암호화하는 데 사용된 인증서 또는 비대칭 키에 대한 액세스 권한이 있어야 합니다. 인증서 또는 비대칭 키가 없으면 데이터베이스를 복원할 수 없습니다. 따라서 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서는 백업이 필요한 동안에는 유지되어야 합니다. 자세한 내용은 SQL Server Certificates and Asymmetric Keys을 참조하세요.
데이터베이스 이동에 대한 추가 고려 사항에 대한 자세한 내용은 백업 및 복원을 사용하여 데이터베이스 복사를 참조하세요.
SQL Server 2005 이상 데이터베이스를 SQL Server 2014로 복원하면 데이터베이스가 자동으로 업그레이드됩니다. 일반적으로 데이터베이스는 즉시 사용할 수 있습니다. 그러나 SQL Server 2005 데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 upgrade_option 서버 속성의 설정에 따라 인덱스를 가져오거나 다시 설정하거나 다시 빌드합니다. 업그레이드 옵션이 가져오기(upgrade_option = 2) 또는 다시 작성(upgrade_option = 0)으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다. 인덱싱되는 데이터 양에 따라 가져오기 작업은 몇 시간씩 걸릴 수 있으며 다시 작성 작업은 10배 정도 더 걸릴 수 있습니다. 업그레이드 옵션이 가져오기로 설정되어 있으면 전체 텍스트 카탈로그를 사용할 수 없는 경우 관련된 전체 텍스트 인덱스가 다시 작성됩니다. upgrade_option 서버 속성의 설정을 변경하려면 sp_fulltext_service를 사용합니다.
안전
보안을 위해 출처를 알 수 없거나 신뢰할 수 없는 복원 데이터베이스는 연결하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.
권한
복원할 데이터베이스가 없으면 CREATE DATABASE 권한이 있어야 RESTORE를 실행할 수 있습니다. 데이터베이스가 있으면 RESTORE 권한 기본적으로 sysadmin 및 dbcreator 고정 서버 역할의 멤버와 데이터베이스의 소유자(dbo)에 설정됩니다.
멤버 자격 정보를 서버에서 항상 사용할 수 있는 역할에 RESTORE 권한이 제공됩니다. 고정 데이터베이스 역할의 멤버 자격은 데이터베이스가 액세스 가능한 상태이며 손상되지 않은 경우에만 확인할 수 있는데, RESTORE 실행 시 데이터베이스가 항상 이러한 상태인 것은 아니므로 db_owner 고정 데이터베이스 역할의 멤버에게는 RESTORE 권한이 없습니다.
SQL Server Management Studio 사용
데이터베이스를 새 위치로 복원하고 필요에 따라 데이터베이스 이름을 바꾸려면
SQL Server 데이터베이스 엔진의 적절한 인스턴스에 연결한 다음 개체 탐색기에서 서버 이름을 클릭하여 서버 트리를 확장합니다.
데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 데이터베이스 복원을 클릭합니다. 데이터베이스 복원 대화 상자가 열립니다.
일반 페이지에서 원본 섹션을 사용하여 복원할 백업 세트의 원본 및 위치를 지정합니다. 다음 옵션 중 하나를 선택합니다.
데이터베이스
복원할 데이터베이스를 드롭다운 목록에서 선택합니다. 목록에는 msdb 백업 기록에 따라 백업된 데이터베이스만 포함됩니다.
비고
백업을 다른 서버에서 가져온 경우 대상 서버에는 지정된 데이터베이스에 대한 백업 기록 정보가 없습니다. 이 경우 디바이스를 선택하여 복원할 파일 또는 디바이스를 수동으로 지정합니다.
디바이스
찾아보기(...) 단추를 클릭하여 백업 디바이스 선택 대화 상자를 엽니다. 백업 미디어 유형 상자에서 나열된 디바이스 유형 중 하나를 선택합니다. 백업 미디어 목록 상자에서 하나 이상의 디바이스를 선택하려면 추가를 클릭합니다.
백업 미디어 목록 상자에 원하는 디바이스를 추가한 후 확인을 클릭하여 일반 페이지로 돌아갑니다.
원본: 디바이스: 데이터베이스 목록 상자에서 복원할 데이터베이스의 이름을 선택합니다.
참고 이 목록은 디바이스를 선택한 경우에만 사용할 수 있습니다. 선택한 디바이스에 백업이 있는 데이터베이스만 사용할 수 있습니다.
대상 섹션의 데이터베이스 상자에는 복원할 데이터베이스의 이름이 자동으로 채워집니다. 데이터베이스 이름을 변경하려면 데이터베이스 상자에 새 이름을 입력합니다.
[복원 대상] 상자에서 기본값을 마지막 백업으로 그대로 두거나 타임라인을 클릭하여 백업 타임라인 대화 상자에 액세스하여 복구 작업을 중지할 특정 시점을 수동으로 선택합니다. 특정 지정 시간을 지정하는 방법은 Backup Timeline 를 참조하세요.
복원에 사용할 백업 세트 선택 그리드에서 복원할 백업을 선택합니다. 이 표는 지정한 위치에서 사용 가능한 백업을 표시합니다. 기본적으로 복구 계획이 제안됩니다. 제안된 복구 계획을 재정의하려면 표에서 선택 항목을 변경할 수 있습니다. 이전 백업 복원에 의존하는 백업은 이전 백업의 선택이 취소되면 자동으로 선택 취소됩니다.
복원할 백업 세트 그리드의 열에 대한 자세한 내용은 데이터베이스 복원(일반 페이지)을 참조하세요.
데이터베이스 파일의 새 위치를 지정하려면 파일 페이지를 선택한 다음 모든 파일을 폴더로 재배치를 클릭합니다. 데이터 파일 폴더 및 로그 파일 폴더에 대한 새 위치를 제공합니다. 이 표에 대한 자세한 내용은 데이터베이스 복원(파일 페이지)을 참조하세요.
옵션 페이지에서 원하는 경우 옵션을 조정합니다. 이러한 옵션에 대한 자세한 내용은 데이터베이스 복원(옵션 페이지)을 참조하세요.
Transact-SQL 사용
데이터베이스를 새 위치로 복원하고 필요에 따라 데이터베이스 이름을 바꾸려면
복원할 전체 데이터베이스 백업이 포함된 백업 세트에 있는 파일의 논리적 이름과 물리적 이름을 결정합니다(선택 사항). 이 문은 백업 집합에 포함된 데이터베이스 및 로그 파일의 목록을 반환합니다. 기본 구문은 다음과 같습니다.
RESTORE FILELISTONLY FROM <
> WITH FILE = backup_set_file_number여기서 backup_set_file_number는 미디어 세트에서의 백업 위치를 나타냅니다. 백업 세트의 위치는 RESTORE HEADERONLY 문을 사용하여 가져올 수 있습니다. 자세한 내용은 RESTORE 인수(Transact-SQL)에서 "백업 집합 지정"을 참조하세요.
이 문장은 여러 가지 WITH 옵션을 지원합니다. 자세한 내용은 RESTORE FILELISTONLY(Transact-SQL)를 참조하세요.
RESTORE DATABASE 문을 사용하여 전체 데이터베이스 백업을 복원합니다. 기본적으로 데이터 및 로그 파일은 원래 위치로 복원됩니다. 데이터베이스를 재배치하려면 MOVE 옵션을 사용하여 각 데이터베이스 파일을 재배치하고 기존 파일과의 충돌을 방지합니다.
데이터베이스를 새 위치 및 새 이름으로 복원하는 데 사용되는 기본 Transact-SQL 구문은 다음과 같습니다.
RESTORE DATABASE new_database_name
FROM backup_device [ ,... n ]
[ 함께
{
[ RECOVERY | NORECOVERY ]
[ , ] [ FILE ={ 백업 세트 파일 번호 | @백업 세트 파일 번호 } ]
[ , ] 'logical_file_name_in_backup'을 'operating_system_file_name'으로 이동 [ ,... n ]
}
;
비고
데이터베이스 위치를 다른 디스크에 다시 지정할 때는 공간이 충분한지 확인하고 기존 파일과의 충돌 가능성이 있는지 확인합니다. 그러려면 RESTORE DATABASE 문에 사용하려는 것과 동일한 MOVE 매개 변수를 지정하는 RESTORE VERIFYONLY 문을 사용해야 합니다.
다음 표에서는 데이터베이스를 새 위치로 복원하는 측면에서 이 RESTORE 문의 인수에 대해 설명합니다. 자세한 내용은 RESTORE 인수(Transact-SQL)를 참조하세요.
new_database_name
새 Database의 이름입니다.비고
참고: 데이터베이스를 다른 서버 인스턴스로 복원하는 경우 새 이름 대신 원래 데이터베이스 이름을 사용할 수 있습니다.
backup_device [
,... n ]
데이터베이스 백업을 복원할 1~64개 백업 디바이스의 쉼표로 구분된 목록을 지정합니다. 물리적 백업 디바이스를 지정하거나 이미 정의된 경우 해당 논리 백업 디바이스를 지정할 수 있습니다. 물리적 백업 디바이스를 지정하려면 DISK 또는 TAPE 옵션을 사용합니다.{ 디스크 | 테이프 }
=physical_backup_device_name자세한 내용은 백업 디바이스(SQL Server)를 참조하세요.
{ 복구 | 복구 안 함 }
데이터베이스에서 전체 복구 모델을 사용하는 경우 데이터베이스를 복원한 후 트랜잭션 로그 백업을 적용해야 할 수 있습니다. 이 경우 NORECOVERY 옵션을 지정합니다.그렇지 않으면 기본값인 RECOVERY 옵션을 사용합니다.
FILE = { backup_set_file_number | @backup_set_file_number }
복원할 백업 세트를 나타냅니다. 예를 들어 backup_set_file_number 가 1 인 경우는 백업 미디어의 첫 번째 백업 세트를 나타내고 backup_set_file_number 가 2 인 경우는 두 번째 백업 세트를 나타냅니다. RESTORE HEADERONLY 문을 사용하여 백업 세트의 backup_set_file_number를 가져올 수 있습니다.이 옵션을 지정하지 않으면 기본값은 백업 디바이스에서 첫 번째 백업 집합을 사용하는 것입니다.
자세한 내용은 RESTORE 인수(Transact-SQL)에서 "백업 집합 지정"을 참조하세요.
'
logical_file_name_in_backup'를 'operating_system_file_name'로 이동 [,...n ]
logical_file_name_in_backup에 지정된 데이터 또는 로그 파일을 operating_system_file_name에 지정된 위치로 복원하도록 지정합니다. 백업 세트에서 새 위치로 복원할 모든 논리적 파일에 대해 MOVE 문을 지정합니다.옵션 설명 백업에 있는 논리적 파일 이름 백업 세트에 있는 데이터 또는 로그 파일의 논리적 이름을 지정합니다. 백업 세트에 있는 데이터 또는 로그 파일의 논리적 파일 이름은 백업 세트 생성 시 데이터베이스의 해당 논리적 이름과 일치합니다.
백업 세트에서 논리적 파일 목록을 가져오려면 RESTORE FILELISTONLY를 사용하십시오.운영_체제_파일_이름 logical_file_name_in_backup 지정한 파일의 새 위치를 지정합니다. 파일이 이 위치로 복원됩니다.
필요에 따라 operating_system_file_name 복원된 파일의 새 파일 이름을 지정합니다. 이는 동일한 서버 인스턴스에 기존 데이터베이스의 복사본을 만드는 경우에 필요합니다.n 는 추가 MOVE 문을 지정할 수 있음을 나타내는 자리 표시자입니다.
예제 (Transact-SQL)
이 예제에서는 AdventureWorks2012 샘플 데이터베이스의 백업을 복원하여 명명 MyAdvWorks 된 새 데이터베이스를 만듭니다. 여기에는 AdventureWorks2012_Data 및 AdventureWorks2012_Log라는 두 개의 파일이 포함됩니다. 이 데이터베이스는 단순 복구 모델을 사용합니다.
AdventureWorks2012 데이터베이스가 이미 서버 인스턴스에 있으므로 백업의 파일을 새 위치로 복원해야 합니다. RESTORE FILELISTONLY 문은 복원할 데이터베이스에 있는 파일의 수와 이름을 확인하는 데 사용합니다. 데이터베이스 백업은 백업 디바이스에 있는 첫 번째 백업 세트입니다.
비고
특정 시점 복원을 포함하여 트랜잭션 로그를 백업하고 복원하는 예제는 다음 MyAdvWorks 예제와 마찬가지로 AdventureWorks2012에서 만든 데이터베이스를 사용합니다MyAdvWorks_FullRM. 그러나 다음 Transact-SQL 문을 사용하여 전체 복구 모델을 사용하도록 결과 MyAdvWorks_FullRM 데이터베이스를 변경해야 합니다. ALTER DATABASE <database_name> SET RECOVERY FULL.
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2012_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2012_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2012_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
AdventureWorks2012 데이터베이스의 전체 데이터베이스 백업을 만드는 방법의 예는 전체 데이터베이스 백업 만들기(SQL Server)를 참조하세요.
관련 작업
또한 참조하십시오
다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)
RESTORE(Transact-SQL)
백업 및 복원으로 데이터베이스 복사