데이터베이스를 새 위치로 복원(SQL Server)

적용 대상:SQL Server

이 문서에서는 SQL Server 데이터베이스를 새 위치로 복원하고 필요에 따라 SSMS(SQL Server Management Studio) 또는 Transact-SQL을 사용하여 SQL Server의 데이터베이스 이름을 바꾸는 방법을 설명합니다. 데이터베이스를 새 디렉터리 경로로 이동하거나 동일한 서버 인스턴스 또는 다른 서버 인스턴스에 데이터베이스의 복사본을 만들 수 있습니다.

시작하기 전에

제한 사항

  • 전체 데이터베이스 백업을 복원하는 시스템 관리자는 현재 복원할 데이터베이스를 사용하는 유일한 사람이어야 합니다.

필수 조건

  • 전체 또는 대량 로그 복구 모델에서 데이터베이스를 복원하려면 먼저 활성 트랜잭션 로그를 백업해야 합니다. 자세한 내용은 트랜잭션 로그 백업(SQL Server)을 참조하세요.

  • 암호화된 데이터베이스를 복원하려면 데이터베이스 를 암호화하는 데 사용되는 인증서 또는 비대칭 키에 액세스할 수 있어야 합니다. 해당 인증서 또는 비대칭 키가 없으면 데이터베이스를 복원할 수 없습니다. 백업이 필요한 한 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서를 유지해야 합니다. 자세한 내용은 SQL Server Certificates and Asymmetric Keys을 참조하세요.

권장 사항

  • 데이터베이스 이동에 대한 다른 고려 사항은 백업 및 복원을 사용하여 데이터베이스 복사를 참조 하세요.

  • SQL Server 2005(9.x) 이상의 데이터베이스를 SQL Server로 복원하면 데이터베이스가 자동으로 업그레이드됩니다. 일반적으로 데이터베이스는 즉시 사용할 수 있습니다. 그러나 SQL Server 2005(9.x) 데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 upgrade_option 서버 속성의 설정에 따라 인덱스를 가져오거나 다시 설정하거나 다시 작성합니다. 업그레이드 옵션이 가져오기(upgrade_option = 2) 또는 다시 작성(upgrade_option = 0)으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다. 인덱싱되는 데이터 양에 따라 가져오기 작업은 몇 시간씩 걸릴 수 있으며 다시 작성 작업은 10배 정도 더 걸릴 수 있습니다. 또한 업그레이드 옵션을 가져오도록 설정하면 전체 텍스트 카탈로그를 사용할 수 없는 경우 연결된 전체 텍스트 인덱스가 다시 작성됩니다. upgrade_option 서버 속성의 설정을 변경하려면 sp_fulltext_service를 사용합니다.

보안

보안을 위해 알 수 없거나 신뢰할 수 없는 원본에서 데이터베이스를 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.

사용 권한

복원 중인 데이터베이스가 없는 경우 RESTORE를 실행할 수 있도록 사용자에게 CREATE DATABASE 권한이 있어야 합니다. 데이터베이스가 있는 경우 RESTORE 권한은 기본적으로 sysadmindbcreator 고정 서버 역할의 멤버와 데이터베이스의 소유자(dbo)로 설정됩니다.

멤버 자격 정보를 서버에서 항상 사용할 수 있는 역할에 RESTORE 권한이 제공됩니다. 고정 데이터베이스 역할 멤버 자격은 데이터베이스에 액세스할 수 있고 손상되지 않은 경우에만 검사 수 있으므로 RESTORE가 실행될 때 항상 그렇지는 않으므로 db_owner 고정 데이터베이스 역할의 멤버에는 RESTORE 권한이 없습니다.

SSMS를 사용하여 데이터베이스를 새 위치로 복원하고 선택적으로 데이터베이스 이름 바꾸기

  1. SQL Server 데이터베이스 엔진 적절한 인스턴스로 커넥트 개체 탐색기 서버 이름을 선택하여 서버 트리를 확장합니다.

  2. 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 데이터베이스 복원을 선택합니다. 데이터베이스 복원 대화 상자가 열립니다.

  3. 일반 페이지에서 원본 섹션을 사용하여 복원할 백업 세트의 원본 및 위치를 지정합니다. 다음 옵션 중 하나를 선택합니다.

    • Database

      복원할 데이터베이스를 드롭다운 목록에서 선택합니다. 목록에는 msdb 백업 기록에 따라 백업된 데이터베이스만 포함됩니다.

    참고 항목

    백업이 다른 서버에서 가져온 경우 대상 서버에는 지정된 데이터베이스에 대한 백업 기록 정보가 없습니다. 이 경우 디바이스를 선택하여 수동으로 복원할 파일 또는 디바이스를 지정합니다.

    • 디바이스

      찾아보기(...) 단추를 선택하여 백업 디바이스 선택 대화 상자를 엽니다. Backup 미디어 유형 상자에서 나열된 디바이스 유형 중 하나를 선택합니다. 백업 미디어 상자에 대해 하나 이상의 디바이스를 선택하려면 추가를 선택합니다.

      백업 미디어 목록 상자에 원하는 디바이스를 추가한 후 확인을 선택하여 일반 페이지로 돌아갑니다.

      원본: 디바이스: 데이터베이스 목록 상자에서 복원해야 하는 데이터베이스의 이름을 선택합니다.

      참고 이 목록은 디바이스를 선택한 경우에만 사용할 수 있습니다. 선택한 디바이스에 백업이 있는 데이터베이스만 사용할 수 있습니다.

  4. 대상 섹션의 데이터베이스 상자에는 복원할 데이터베이스의 이름이 자동으로 채워집니다. 데이터베이스 이름을 변경하려면 데이터베이스 상자에 새 이름을 입력합니다.

  5. [복원 대상] 상자에서 기본값을 마지막 백업으로 그대로 두거나 타임라인을 선택하여 백업 타임라인 대화 상자에 액세스하여 복구 작업을 중지할 특정 시점을 수동으로 선택합니다. 특정 지정 시간을 지정하는 방법은 Backup Timeline 를 참조하세요.

  6. 그리드를 복원할 Backup 집합에서 복원 할 백업을 선택합니다. 이 표는 지정한 위치에서 사용 가능한 백업을 표시합니다. 기본적으로 복구 계획이 제안됩니다. 제안된 복구 계획을 재정의하려면 표에서 선택 항목을 변경할 수 있습니다. 이전 백업의 복원에 따라 달라지는 백업은 이전 백업의 선택을 취소하면 자동으로 선택 취소됩니다.

    그리드를 복원하기 위한 Backup 집합의 열에 대한 자세한 내용은 데이터베이스 복원(일반 페이지)을 참조하세요.

  7. 데이터베이스 파일의 새 위치를 지정하려면 파일 페이지를 선택한 다음 모든 파일을 폴더로 재배치를 선택합니다. 데이터 파일 폴더 및 로그 파일 폴더대한 새 위치를 제공합니다. 이 표에 대한 자세한 내용은 데이터베이스 복원(파일 페이지)을 참조하세요.

  8. 옵션 페이지에서 원하는 경우 옵션을 조정합니다. 이러한 옵션에 대한 자세한 내용은 데이터베이스 복원(옵션 페이지)을 참조하세요.

데이터베이스를 새 위치로 복원합니다. 필요에 따라 T-SQL을 사용하여 데이터베이스 이름 바꾸기

  1. 복원할 전체 데이터베이스 백업이 포함된 백업 세트에 있는 파일의 논리적 이름과 물리적 이름을 결정합니다(선택 사항). 이 문은 백업 집합에 포함된 데이터베이스 및 로그 파일의 목록을 반환합니다. 기본 구문은 다음과 같습니다.

    FILE = backup_set_file_number> BACKUP_DEVICE FILELISTONLY <복원

    여기서 backup_set_file_number 미디어 세트의 백업 위치를 나타냅니다. 백업 세트의 위치는 RESTORE HEADERONLY 문을 사용하여 가져올 수 있습니다. 자세한 내용은 백업 세트 지정을 참조 하세요.

    이 문은 여러 WITH 옵션도 지원합니다. 자세한 내용은 RESTORE FILELISTONLY(Transact-SQL)를 참조하세요.

  2. RESTORE DATABASE 문을 사용하여 전체 데이터베이스 백업을 복원합니다. 기본적으로 데이터 및 로그 파일은 원래 위치로 복원됩니다. 데이터베이스를 재배치하려면 MOVE 옵션을 사용하여 각 데이터베이스 파일을 재배치하고 기존 파일과의 충돌을 방지합니다.

데이터베이스를 새 위치로 복원하고 새 이름을 복원하기 위한 기본 Transact-SQL 구문은 다음과 같습니다.

RESTORE DATABASE *new_database_name*  

FROM *backup_device* [ ,...*n* ]  

[ WITH  

 {  

    [ **RECOVERY** | NORECOVERY ]  

    [ , ] [ FILE ={ *backup_set_file_number* | @*backup_set_file_number* } ]  

    [ , ] MOVE '*logical_file_name_in_backup*' TO '*operating_system_file_name*' [ ,...*n* ]  

}  

;  

참고 항목

데이터베이스 위치를 다른 디스크에 다시 지정할 때는 공간이 충분한지 확인하고 기존 파일과의 충돌 가능성이 있는지 확인합니다. 그러려면 RESTORE DATABASE 문에 사용하려는 것과 동일한 MOVE 매개 변수를 지정하는 RESTORE VERIFYONLY 문을 사용해야 합니다.

다음 표에서는 데이터베이스를 새 위치로 복원하는 측면에서 이 RESTORE 문의 인수에 대해 설명합니다. 이러한 인수에 대한 자세한 내용은 RESTORE(Transact-SQL)를 참조하세요.

new_database_name
데이터베이스의 새 이름입니다.

참고 항목

데이터베이스를 다른 서버 인스턴스로 복원하는 경우 새 이름 대신 원래 데이터베이스 이름을 사용할 수 있습니다.

backup_device [ ,...n ]
데이터베이스 백업을 복원할 1~64개 백업 디바이스의 쉼표로 구분된 목록을 지정합니다. 물리적 백업 디바이스를 지정하거나 정의된 경우 해당 논리 백업 디바이스를 지정할 수 있습니다. 물리적 백업 디바이스를 지정하려면 DISK 또는 TAPE 옵션을 사용합니다.

{ DISK | TAPE } =physical_backup_device_name

자세한 내용은 백업 디바이스(SQL Server)를 참조하세요.

{ RECOVERY | NORECOVERY }
데이터베이스에서 전체 복구 모델을 사용하는 경우 데이터베이스를 복원한 후 트랜잭션 로그 백업을 적용해야 할 수 있습니다. 이 경우 NORECOVERY 옵션을 지정합니다.

그렇지 않으면 기본값인 RECOVERY 옵션을 사용합니다.

FILE = { backup_set_file_number | @backup_set_file_number }
복원할 백업 세트를 나타냅니다. 예를 들어 backup_set_file_number1 인 경우는 백업 미디어의 첫 번째 백업 세트를 나타내고 backup_set_file_number2 인 경우는 두 번째 백업 세트를 나타냅니다. 백업 세트의 backup_set_file_numberRESTORE HEADERONLY 문을 사용하여 가져올 수 없습니다.

이 옵션을 지정하지 않으면 기본값은 백업 디바이스에서 첫 번째 백업 집합을 사용하는 것입니다.

자세한 내용은 RESTORE 인수(Transact-SQL)에서 "백업 집합 지정"을 참조하세요.

'logical_file_name_in_backup''operating_system_file_name'로 이동 [ ,...n ]
logical_file_name_in_backup 지정한 데이터 또는 로그 파일을 operating_system_file_name 지정한 위치로 복원하도록 지정합니다. 백업 세트에서 새 위치로 복원할 모든 논리적 파일에 대해 MOVE 문을 지정합니다.

옵션 설명
logical_file_name_in_backup 백업 세트에 있는 데이터 또는 로그 파일의 논리적 이름을 지정합니다. 백업 세트에 있는 데이터 또는 로그 파일의 논리적 파일 이름은 백업 세트 생성 시 데이터베이스의 해당 논리적 이름과 일치합니다.



참고: 백업 세트에서 논리 파일 목록을 가져오려면 RESTORE FILELISTONLY를 사용합니다.
operating_system_file_name logical_file_name_in_backup 지정한 파일의 새 위치를 지정합니다. 파일이 이 위치로 복원됩니다.

필요에 따라 operating_system_file_name 복원된 파일의 새 파일 이름을 지정합니다. 이는 동일한 서버 인스턴스에 기존 데이터베이스의 복사본을 만드는 경우에 필요합니다.
n 추가 MOVE 문을 지정할 수 있음을 나타내는 자리 표시자입니다.

예제(Transact-SQL)

이 예제에서는 _Data 및 AdventureWorks2022_Log 두 개의 파일을 AdventureWorks2022포함하는 샘플 데이터베이스의 AdventureWorks2022 백업을 복원하여 명명된 MyAdvWorks 새 데이터베이스를 만듭니다. 이 데이터베이스는 단순 복구 모델을 사용합니다. 데이터베이스가 AdventureWorks2022 서버 인스턴스에 이미 있으므로 백업의 파일을 새 위치로 복원해야 합니다. RESTORE FILELISTONLY 문은 복원 중인 데이터베이스에 있는 파일의 수와 이름을 확인하는 데 사용됩니다. 데이터베이스 백업은 백업 디바이스에 있는 첫 번째 백업 세트입니다.

참고 항목

지정 시간 복원을 비롯하여 트랜잭션 로그를 백업 및 복원하는 예에서는 다음 MyAdvWorks_FullRM 예와 마찬가지로 AdventureWorks2022에서 만든 MyAdvWorks 데이터베이스를 사용합니다. 그러나 다음 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.  
-- AdventureWorks2022_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2022_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2022_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  
  

데이터베이스의 전체 데이터베이스 백업 AdventureWorks2022 을 만드는 방법의 예는 전체 데이터베이스 백업 만들기(SQL Server)를 참조하세요.

관련 작업

참고 항목