RESTORE 문(Transact-SQL)RESTORE Statements (Transact-SQL)

BACKUP 명령을 사용하여 만든 SQL 데이터베이스 백업을 복원합니다.Restores SQL database backups taken using the BACKUP command.

작업 중인 특정 SQL 버전에 대한 구문, 인수, 설명, 사용 권한 및 예제를 보려면 다음 탭 중 하나를 클릭합니다.Click one of the following tabs for the syntax, arguments, remarks, permissions, and examples for a particular SQL version with which you are working.

구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하십시오.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

제품을 클릭하세요.Click a product!

다음 행에서 관심이 있는 제품 이름을 클릭합니다.In the following row, click whichever product name you are interested in. 클릭하면 여기에서 클릭한 제품에 적절한 다른 콘텐츠를 표시합니다.The click displays different content here, appropriate for whichever product you click:

 

SQL ServerSQL Server

이 명령을 사용하면 다음과 같은 복원 시나리오를 수행할 수 있습니다.This command enables you to perform the following restore scenarios:

  • 전체 데이터베이스 백업에서 전체 데이터베이스를 복원합니다(전체 복원).Restore an entire database from a full database backup (a complete restore).
  • 데이터베이스의 일부를 복원합니다(부분 복원).Restore part of a database (a partial restore).
  • 특정 파일 또는 파일 그룹을 데이터베이스로 복원합니다(파일 복원).Restore specific files or filegroups to a database (a file restore).
  • 특정 페이지를 데이터베이스로 복원합니다(페이지 복원).Restore specific pages to a database (a page restore).
  • 트랜잭션 로그를 데이터베이스로 복원합니다(트랜잭션 로그 복원).Restore a transaction log onto a database (a transaction log restore).
  • 데이터베이스 스냅숏에서 캡처한 지점으로 데이터베이스를 되돌립니다.Revert a database to the point in time captured by a database snapshot.

SQL ServerSQL Server 복원 시나리오에 대한 자세한 내용은 복원 및 복구 개요 (SQL Server)를 참조하세요.For more information about SQL ServerSQL Server restore scenarios, see Restore and Recovery Overview (SQL Server). 인수 설명에 대한 자세한 내용은 RESTORE 인수 (Transact-SQL)을 참조하세요.For more information about descriptions of the arguments, see RESTORE Arguments (Transact-SQL). 다른 인스턴스에서 데이터베이스를 복원할 때 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)의 정보를 참조하세요.When restoring a database from another instance, consider the information from Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

참고

Microsoft Azure Blob Storage 서비스에서 복원에 대한 자세한 내용은 Microsoft Azure Blob Storage 서비스로 SQL Server 백업 및 복원을 참조하세요.For more information about restoring from the Microsoft Azure Blob storage service, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service.

구문Syntax

--To Restore an Entire Database from a Full database backup (a Complete Restore):  
RESTORE DATABASE { database_name | @database_name_var }   
 [ FROM <backup_device> [ ,...n ] ]  
 [ WITH   
   {  
    [ RECOVERY | NORECOVERY | STANDBY =   
        {standby_file_name | @standby_file_name_var }   
       ]  
   | ,  <general_WITH_options> [ ,...n ]  
   | , <replication_WITH_option>  
   | , <change_data_capture_WITH_option>  
   | , <FILESTREAM_WITH_option>  
   | , <service_broker_WITH options>   
   | , \<point_in_time_WITH_options-RESTORE_DATABASE>   
   } [ ,...n ]  
 ]  
[;]  

--To perform the first step of the initial restore sequence of a piecemeal restore:  
RESTORE DATABASE { database_name | @database_name_var }   
   <files_or_filegroups> [ ,...n ]  
 [ FROM <backup_device> [ ,...n ] ]   
   WITH   
      PARTIAL, NORECOVERY   
      [  , <general_WITH_options> [ ,...n ]   
       | , \<point_in_time_WITH_options-RESTORE_DATABASE>   
      ] [ ,...n ]   
[;]  

--To Restore Specific Files or Filegroups:   
RESTORE DATABASE { database_name | @database_name_var }   
   <file_or_filegroup> [ ,...n ]  
 [ FROM <backup_device> [ ,...n ] ]   
   WITH   
   {  
      [ RECOVERY | NORECOVERY ]  
      [ , <general_WITH_options> [ ,...n ] ]  
   } [ ,...n ]   
[;]  

--To Restore Specific Pages:   
RESTORE DATABASE { database_name | @database_name_var }   
   PAGE = 'file:page [ ,...n ]'   
 [ , <file_or_filegroups> ] [ ,...n ]  
 [ FROM <backup_device> [ ,...n ] ]   
   WITH   
       NORECOVERY     
      [ , <general_WITH_options> [ ,...n ] ]  
[;]  

--To Restore a Transaction Log:  
RESTORE LOG { database_name | @database_name_var }   
 [ <file_or_filegroup_or_pages> [ ,...n ] ]  
 [ FROM <backup_device> [ ,...n ] ]   
 [ WITH   
   {  
     [ RECOVERY | NORECOVERY | STANDBY =   
        {standby_file_name | @standby_file_name_var }   
       ]  
    | ,  <general_WITH_options> [ ,...n ]  
    | , <replication_WITH_option>  
    | , \<point_in_time_WITH_options-RESTORE_LOG>   
   } [ ,...n ]  
 ]   
[;]  

--To Revert a Database to a Database Snapshot:     
RESTORE DATABASE { database_name | @database_name_var }   
FROM DATABASE_SNAPSHOT = database_snapshot_name   

<backup_device>::=  
{   
   { logical_backup_device_name |  
      @logical_backup_device_name_var }  
 | { DISK    
     | TAPE  
     | URL   
   } = { 'physical_backup_device_name' |  
      @physical_backup_device_name_var }   
}   
Note: URL is the format used to specify the location and the file name for the Microsoft Azure Blob. Although Microsoft Azure storage is a service, the implementation is similar to disk and tape to allow for a consistent and seemless restore experince for all the three devices.  
<files_or_filegroups>::=   
{   
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }   
 | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }   
 | READ_WRITE_FILEGROUPS  
}   

<general_WITH_options> [ ,...n ]::=   
--Restore Operation Options  
   MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'   
          [ ,...n ]   
 | REPLACE   
 | RESTART   
 | RESTRICTED_USER  | CREDENTIAL  

--Backup Set Options  
 | FILE = { backup_set_file_number | @backup_set_file_number }   
 | PASSWORD = { password | @password_variable }   

--Media Set Options  
 | MEDIANAME = { media_name | @media_name_variable }   
 | MEDIAPASSWORD = { mediapassword | @mediapassword_variable }   
 | BLOCKSIZE = { blocksize | @blocksize_variable }   

--Data Transfer Options  
 | BUFFERCOUNT = { buffercount | @buffercount_variable }   
 | MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }  

--Error Management Options  
 | { CHECKSUM | NO_CHECKSUM }   
 | { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }   

--Monitoring Options  
 | STATS [ = percentage ]   

--Tape Options. 
 | { REWIND | NOREWIND }   
 | { UNLOAD | NOUNLOAD }   

<replication_WITH_option>::=  
 | KEEP_REPLICATION   

<change_data_capture_WITH_option>::=  
 | KEEP_CDC  

<FILESTREAM_WITH_option>::=  
 | FILESTREAM ( DIRECTORY_NAME = directory_name )  

<service_broker_WITH_options>::=   
 | ENABLE_BROKER   
 | ERROR_BROKER_CONVERSATIONS   
 | NEW_BROKER  

\<point_in_time_WITH_options-RESTORE_DATABASE>::=   
 | {  
   STOPAT = { 'datetime'| @datetime_var }   
 | STOPATMARK = 'lsn:lsn_number'  
                 [ AFTER 'datetime']   
 | STOPBEFOREMARK = 'lsn:lsn_number'  
                 [ AFTER 'datetime']   
   }   

\<point_in_time_WITH_options-RESTORE_LOG>::=   
 | {  
   STOPAT = { 'datetime'| @datetime_var }   
 | STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }  
                 [ AFTER 'datetime']   
 | STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }  
                 [ AFTER 'datetime']   
   }  

인수Arguments

인수 설명은 RESTORE 인수 (Transact-SQL)을 참조하세요.For descriptions of the arguments, see RESTORE Arguments (Transact-SQL).

복원 시나리오About Restore Scenarios

SQL ServerSQL Server는 다양한 복원 시나리오를 지원합니다.supports a variety of restore scenarios:

RESTORE 옵션에 대한 추가 고려 사항Additional Considerations About RESTORE Options

지원되지 않는 RESTORE 키워드Discontinued RESTORE Keywords

다음 키워드는 SQL Server 2008SQL Server 2008에서 더 이상 지원되지 않습니다.The following keywords were discontinued in SQL Server 2008SQL Server 2008:

지원되지 않는 키워드Discontinued keyword 다음으로 대체됩니다...Replaced by... 대체 키워드 예Example of replacement keyword
LOADLOAD RESTORERESTORE RESTORE DATABASE
TRANSACTIONTRANSACTION LOGLOG RESTORE LOG
DBO_ONLYDBO_ONLY RESTRICTED_USERRESTRICTED_USER RESTORE DATABASE ... WITH RESTRICTED_USER

RESTORE LOGRESTORE LOG

RESTORE LOG에 파일 목록을 포함하여 롤포워드 중에 파일을 만들 수 있습니다.RESTORE LOG can include a file list to allow for creation of files during roll forward. 이 기능은 데이터베이스에 파일을 추가할 때 기록된 로그 레코드가 로그 백업에 포함되는 경우에 사용됩니다.This is used when the log backup contains log records written when a file was added to the database.

참고

전체 또는 대량 로그된 복구 모델을 사용하는 데이터베이스의 경우 대개 데이터베이스를 복원하기 전에 비상 로그 백업을 수행해야 합니다.For a database using the full or bulk-logged recovery model, in most cases you must back up the tail of the log before restoring the database. RESTORE DATABASE 문에 데이터 백업이 종료된 후 발생한 시간 또는 트랜잭션을 지정해야 하는 WITH REPLACE나 WITH STOPAT 절이 포함되어 있지 않은 경우 비상 로그 백업을 먼저 수행하지 않고 데이터베이스를 복원하면 오류가 발생합니다.Restoring a database without first backing up the tail of the log results in an error, unless the RESTORE DATABASE statement contains either the WITH REPLACE or the WITH STOPAT clause, which must specify a time or transaction that occurred after the end of the data backup. 비상 로그 백업에 대한 자세한 내용은 비상 로그 백업(SQL Server)을 참조하세요.For more information about tail-log backups, see Tail-Log Backups (SQL Server).

RECOVERY와 NORECOVERY 비교Comparison of RECOVERY and NORECOVERY

RESTORE 문에서 다음과 같이 [ RECOVERY | NORECOVERY ] 옵션을 통해 롤백을 제어합니다.Roll back is controlled by the RESTORE statement through the [ RECOVERY | NORECOVERY ] options:

  • NORECOVERY는 롤백이 발생하지 않도록 지정합니다.NORECOVERY specifies that roll back not occur. 이렇게 하면 순서대로 다음 문으로 롤포워드를 계속할 수 있습니다.This allows roll forward to continue with the next statement in the sequence.

이런 경우 복원 시퀀스는 다른 백업을 복원하여 롤포워드할 수 있습니다.In this case, the restore sequence can restore other backups and roll them forward.

  • RECOVERY(기본값)는 현재 백업에 대해 롤포워드가 완료된 다음 롤백이 수행되어야 한다는 의미입니다.RECOVERY (the default) indicates that roll back should be performed after roll forward is completed for the current backup.

데이터베이스를 복구하려면 복원할 전체 데이터 집합(롤포워드 세트)가 데이터베이스와 일치해야 합니다.Recovering the database requires that the entire set of data being restored (the roll forward set) is consistent with the database. 롤포워드 세트가 데이터베이스와 일치할 만큼 충분히 롤포워드되지 않은 경우 RECOVERY를 지정하면 데이터베이스 엔진Database Engine에서 오류가 발생합니다.If the roll forward set has not been rolled forward far enough to be consistent with the database and RECOVERY is specified, the 데이터베이스 엔진Database Engine issues an error.

호환성 지원Compatibility Support

이전 SQL ServerSQL Server 버전을 사용하여 만든 master, modelmsdb 백업은 SQL Server 2017SQL Server 2017를 통해 복원할 수 없습니다.Backups of master, model and msdb that were created by using an earlier version of SQL ServerSQL Server cannot be restored by SQL Server 2017SQL Server 2017.

참고

SQL ServerSQL Server 백업은 백업을 만든 버전 이전의 SQL ServerSQL Server 버전으로 복원할 수 없습니다.No SQL ServerSQL Server backup be restored to an earlier version of SQL ServerSQL Server than the version on which the backup was created.

SQL ServerSQL Server의 각 버전은 이전 버전과는 다른 기본 경로를 사용합니다.Each version of SQL ServerSQL Server uses a different default path than earlier versions. 따라서 이전 버전 백업의 기본 위치에 만든 데이터베이스를 복원하려면 MOVE 옵션을 사용해야 합니다.Therefore, to restore a database that was created in the default location for earlier version backups, you must use the MOVE option. 새 기본 경로에 대한 자세한 내용은 SQL Server의 기본값 및 명명된 인스턴스에 대한 파일 위치를 참조하세요.For information about the new default path, see File Locations for Default and Named Instances of SQL Server.

SQL Server 2017SQL Server 2017로 이전 버전 데이터베이스를 복원하면 데이터베이스가 자동으로 업그레이드됩니다.After you restore an earlier version database to SQL Server 2017SQL Server 2017, the database is automatically upgraded. 일반적으로 데이터베이스는 즉시 사용할 수 있습니다.Typically, the database becomes available immediately. 그러나 SQL Server 2005SQL Server 2005 데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 upgrade_option 서버 속성의 설정에 따라 인덱스를 가져오거나 다시 설정하거나 다시 작성합니다.However, if a SQL Server 2005SQL Server 2005 database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the upgrade_option server property. 업그레이드 옵션이 가져오기(upgrade_option = 2) 또는 다시 작성(upgrade_option = 0)으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다.If the upgrade option is set to import (upgrade_option = 2) or rebuild (upgrade_option = 0), the full-text indexes will be unavailable during the upgrade. 인덱싱되는 데이터 양에 따라 가져오기 작업은 몇 시간씩 걸릴 수 있으며 다시 작성 작업은 10배 정도 더 걸릴 수 있습니다.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. 업그레이드 옵션이 가져오기로 설정되어 있으면 전체 텍스트 카탈로그를 사용할 수 없는 경우 관련된 전체 텍스트 인덱스가 다시 작성됩니다.Note also that when the upgrade option is set to import, the associated full-text indexes are rebuilt if a full-text catalog is not available. upgrade_option 서버 속성의 설정을 변경하려면 sp_fulltext_service를 사용합니다.To change the setting of the upgrade_option server property, use sp_fulltext_service.

데이터베이스가 새 SQL ServerSQL Server인스턴스로 처음으로 연결되거나 복원될 때 데이터베이스 마스터 키(서비스 마스터 키로 암호화됨)의 복사본은 서버에 아직 저장되지 않은 상태입니다.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. 데이터베이스 마스터 키를 암호 해독하려면 OPEN MASTER KEY 문을 사용해야 합니다.You must use the OPEN MASTER KEY statement to decrypt the database master key (DMK). DMK를 암호 해독한 후에는 ALTER MASTER KEY REGENERATE 문을 사용하여 SMK(서비스 마스터 키)로 암호화된 DMK의 복사본을 서버에 프로비전함으로써 앞으로 자동 암호 해독을 사용하도록 설정할 수 있습니다.Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. DMK를 다시 생성하는 방법은 ALTER MASTER KEY(Transact-SQL)를 참조하세요.For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 작업은 한 번만 필요하며 키 회전 전략의 일부로 이후에 수행하는 다시 생성 작업에 영향을 주지 않습니다.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy.

일반적인 주의 사항General Remarks

오프라인 복원 시에 지정된 데이터베이스가 사용 중이면 RESTORE는 짧은 지연 후 사용자가 강제로 로그오프되도록 합니다.During an offline restore, if the specified database is in use, RESTORE forces the users off after a short delay. 주 파일 그룹이 아닌 파일 그룹에 대한 온라인 복원의 경우 복원한 파일 그룹이 오프라인 상태가 되는 경우를 제외하면 데이터베이스는 사용 중 상태로 유지될 수 있습니다.For online restore of a non-primary filegroup, the database can stay in use except when the filegroup being restored is being taken offline. 지정한 데이터베이스의 모든 데이터는 복원된 데이터로 대체됩니다.Any data in the specified database is replaced by the restored data.

데이터베이스에 대한 자세한 내용은 복원 및 복구 개요(SQL Server)를 참조하세요.For more information about database recovery, see Restore and Recovery Overview (SQL Server).

플랫폼 간 복원 작업은 서로 다른 프로세서 유형 간 복원 작업인 경우에도 운영 체제에서 데이터베이스의 데이터 정렬을 지원하는 한 수행할 수 있습니다.Cross-platform restore operations, even between different processor types, can be performed as long as the collation of the database is supported by the operating system.

오류가 발생하면 RESTORE는 다시 시작할 수 있습니다.RESTORE can be restarted after an error. 또한 오류와 관계없이 RESTORE가 계속되도록 지시하여 최대한 많은 데이터를 복원할 수 있습니다(CONTINUE_AFTER_ERROR 옵션 참조).In addition, you can instruct RESTORE to continue despite errors, and it restores as much data as possible (see the CONTINUE_AFTER_ERROR option).

RESTORE는 명시적 또는 암시적 트랜잭션에서 사용할 수 없습니다.RESTORE is not allowed in an explicit or implicit transaction.

손상된 master 데이터베이스는 특별한 프로시저를 사용하여 복원할 수 있습니다.Restoring a damaged master database is performed using a special procedure. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server&#41를 참조하세요.For more information, see Back Up and Restore of System Databases (SQL Server).

데이터베이스를 복원하면 SQL ServerSQL Server 인스턴스에 대한 계획 캐시가 지워집니다.Restoring a database clears the plan cache for the instance of SQL ServerSQL Server. 계획 캐시를 삭제하면 모든 후속 실행 계획이 다시 컴파일되며 일시적으로 갑자기 쿼리 성능이 저하될 수 있습니다.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. 계획 캐시의 삭제된 각 캐시스토어에 대해 SQL ServerSQL Server 오류 로그에 "데이터베이스 유지 관리 또는 재구성 작업으로 인해 '%s' 캐시스토어(계획 캐시의 일부)에 대한 캐시스토어 플러시가 SQL ServerSQL Server에서 %d번 발견되었습니다"라는 정보 메시지가 있습니다.For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". 이 메시지는 캐시가 해당 시간 간격 내에 플러시되는 동안 5분마다 기록됩니다.This message is logged every five minutes as long as the cache is flushed within that time interval.

가용성 데이터베이스를 복원하려면 먼저 SQL ServerSQL Server의 인스턴스에 데이터베이스를 복원한 다음 데이터베이스를 가용성 그룹에 추가합니다.To restore an availability database, first restore the database to the instance of SQL ServerSQL Server, and then add the database to the availability group.

상호 운용성Interoperability

데이터베이스 설정 및 복원Database Settings and Restoring

복원 시에는 ALTER DATABASE를 사용하여 설정할 수 있는 대부분의 데이터베이스 옵션이 백업 종료 시에 유효한 값으로 다시 설정됩니다.During a restore, most of the database options that are settable using ALTER DATABASE are reset to the values in force at the time of the end of backup.

그러나 WITH RESTRICTED_USER 옵션을 사용하면 사용자 액세스 옵션 설정 시에 이 동작이 무시됩니다.Using the WITH RESTRICTED_USER option, however, overrides this behavior for the user access option setting. 이 설정은 항상 WITH RESTRICTED_USER 옵션이 포함되어 있는 RESTORE 문 다음에 지정됩니다.This setting is always set following a RESTORE statement, which includes the WITH RESTRICTED_USER option.

암호화된 데이터베이스 복원Restoring an Encrypted Database

암호화된 데이터베이스를 복원하려면 데이터베이스를 암호화하는 데 사용된 인증서 또는 비대칭 키에 대한 액세스 권한이 있어야 합니다.To restore a database that is encrypted, you must have access to the certificate or asymmetric key that was used to encrypt the database. 인증서 또는 비대칭 키가 없으면 데이터베이스를 복원할 수 없습니다.Without the certificate or asymmetric key, the database cannot be restored. 따라서 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서는 백업이 필요한 동안에는 유지되어야 합니다.As a result, the certificate that is used to encrypt the database encryption key must be retained as long as the backup is needed. 자세한 내용은 SQL Server Certificates and Asymmetric Keys을 참조하세요.For more information, see SQL Server Certificates and Asymmetric Keys.

VarDecimal 저장소에 사용할 수 있는 데이터베이스 복원Restoring a Database Enabled for vardecimal Storage

백업 및 복원은 vardecimal 저장소 형식에서 올바르게 작동합니다.Backup and restore work correctly with the vardecimal storage format. vardecimal 저장소 형식에 대한 자세한 내용은 sp_db_vardecimal_storage_format (Transact-SQL)을 참조하세요.For more information about vardecimal storage format, see sp_db_vardecimal_storage_format (Transact-SQL).

전체 텍스트 데이터 복원Restore Full-Text Data

전체 텍스트 데이터가 전체 복원 시에 다른 데이터베이스 데이터와 함께 복원됩니다.Full-text data is restored together with other database data during a complete restore. 전체 텍스트 파일은 일반 RESTORE DATABASE database_name FROM backup_device 구문을 사용하여 데이터베이스 파일 복원의 일부로 복원됩니다.Using the regular RESTORE DATABASE database_name FROM backup_device syntax, the full-text files are restored as part of the database file restore.

또한 RESTORE 문을 사용하여 대체 위치로 복원, 차등 복원, 파일 및 파일 그룹 복원, 전체 텍스트 데이터의 차등 파일 및 파일 그룹 복원을 수행할 수 있습니다.The RESTORE statement also can be used to perform restores to alternate locations, differential restores, file and filegroup restores, and differential file and filegroup restores of full-text data. 또한 RESTORE를 사용하면 전체 텍스트 파일만 복원할 수도 있고 데이터베이스 데이터를 함께 복원할 수도 있습니다.In addition, RESTORE can restore full-text files only, as well as with database data.

참고

SQL Server 2005SQL Server 2005에서 가져온 전체 텍스트 카탈로그는 여전히 데이터베이스 파일로 처리됩니다.Full-text catalogs imported from SQL Server 2005SQL Server 2005 are still treated as database files. 따라서 백업 작업 중에 더 이상 일시 중지하고 재개할 필요가 없다는 점을 제외하고 전체 텍스트 카탈로그를 백업하는 SQL Server 2005SQL Server 2005 절차는 계속 적용 가능합니다.For these, the SQL Server 2005SQL Server 2005 procedure for backing up full-text catalogs remains applicable, except that pausing and resuming during the backup operation are no longer necessary. 자세한 내용은 전체 텍스트 카탈로그 백업 및 복원을 참조하세요.For more information, see Backing Up and Restoring Full-Text Catalogs.

메타데이터Metadata

SQL ServerSQL Server에는 각 서버 인스턴스의 백업 및 복원 작업을 추적하는 백업 및 복원 기록 테이블이 있습니다.includes backup and restore history tables that track the backup and restore activity for each server instance. 복원을 수행하면 백업 기록 테이블도 수정됩니다.When a restore is performed, the backup history tables are also modified. 자세한 내용은 백업 기록 및 헤더 정보 (SQL Server)를 참조하세요.For information on these tables, see Backup History and Header Information (SQL Server).

REPLACE 옵션의 영향REPLACE Option Impact

REPLACE는 신중한 검토 후에만 사용해야 하며 되도록 사용하지 않아야 합니다.REPLACE should be used rarely and only after careful consideration. 복원은 보통 실수로 복원 중 다른 데이터베이스로 현재 데이터베이스를 덮어쓰는 일을 방지합니다.Restore normally prevents accidentally overwriting a database with a different database. RESTORE 문에서 지정된 데이터베이스가 현재 서버에 이미 존재하고 지정된 데이터베이스 패밀리 GUID가 백업 세트에 기록된 데이터베이스 패밀리 GUID와 다르면 해당 데이터베이스는 복원되지 않습니다.If the database specified in a RESTORE statement already exists on the current server and the specified database family GUID differs from the database family GUID recorded in the backup set, the database is not restored. 이것은 중요한 보호 수단입니다.This is an important safeguard.

REPLACE 옵션은 복원 작업 중 일반적으로 수행하는 몇 가지 중요한 안전성 검사를 무시합니다.The REPLACE option overrides several important safety checks that restore normally performs. 무시되는 검사는 다음과 같습니다.The overridden checks are as follows:

  • 다른 데이터베이스의 백업으로 기존 데이터베이스 복원Restoring over an existing database with a backup taken of another database.

    REPLACE 옵션을 사용하면 복원 중에 백업 세트에 있는 데이터베이스가 어떤 것이든 관계 없이 해당 데이터베이스로 기존 데이터베이스를 덮어쓸 수 있습니다. 심지어 지정된 데이터베이스 이름이 백업 세트에 기록된 데이터베이스 이름과 다른 경우에도 마찬가지입니다.With the REPLACE option, restore allows you to overwrite an existing database with whatever database is in the backup set, even if the specified database name differs from the database name recorded in the backup set. 이로 인해 실수로 다른 데이터베이스로 데이터베이스를 덮어쓰는 경우가 생길 수 있습니다.This can result in accidentally overwriting a database by a different database.

  • 비상 로그 백업을 수행하지 않았고 STOPAT 옵션을 사용하지 않은 상태에서 전체 또는 대량 로그 복구 모델을 사용한 데이터베이스 복원Restoring over a database using the full or bulk-logged recovery model where a tail-log backup has not been taken and the STOPAT option is not used.

    최근에 기록된 로그가 백업되지 않았으므로 REPLACE 옵션을 사용하면 커밋된 작업이 손실될 수 있습니다.With the REPLACE option, you can lose committed work, because the log written most recently has not been backed up.

  • 기존 파일 덮어쓰기Overwriting existing files.

    예를 들어 .xls 파일과 같은 잘못된 유형의 파일 또는 현재 온라인 상태가 아닌 다른 데이터베이스에서 사용 중인 파일을 덮어쓸 수 있습니다.For example, a mistake could allow overwriting files of the wrong type, such as .xls files, or that are being used by another database that is not online. 데이터 복원이 완료되어도 기존 파일을 덮어쓴 경우에는 임의의 데이터 손실이 발생할 수 있습니다.Arbitrary data loss is possible if existing files are overwritten, although the restored database is complete.

복원 다시 실행Redoing a Restore

복원 결과는 실행 취소할 수 없지만 데이터 복사 결과를 무시하고 파일 단위로 다시 시작하여 롤포워드할 수 있습니다.Undoing the effects of a restore is not possible; however, you can negate the effects of the data copy and roll forward by starting over on a per-file basis. 다시 시작하려면 원하는 파일을 복원하고 롤포워드를 다시 수행하십시오.To start over, restore the desired file and perform the roll forward again. 예를 들어 실수로 너무 많은 로그 백업을 복원하고 원하는 중지 지점을 지난 경우에는 해당 시퀀스를 다시 시작해야 합니다.For example, if you accidentally restored too many log backups and overshot your intended stopping point, you would have to restart the sequence.

복원 시퀀스를 중단하고 영향을 받는 파일의 전체 내용을 복원하여 다시 시작할 수 있습니다.A restore sequence can be aborted and restarted by restoring the entire contents of the affected files.

데이터베이스를 데이터베이스 스냅숏으로 되돌리기Reverting a Database to a Database Snapshot

DATABASE_SNAPSHOT 옵션을 사용하여 지정한 데이터베이스 되돌리기 작업은 전체 원본 데이터베이스를 데이터베이스 스냅숏 시점으로 되돌려 지정한 데이터베이스 스냅숏에 유지 관리된 시점의 데이터로 원본 데이터베이스를 덮어씁니다.A revert database operation (specified using the DATABASE_SNAPSHOT option) takes a full source database back in time by reverting it to the time of a database snapshot, that is, overwriting the source database with data from the point in time maintained in the specified database snapshot. 현재 되돌리는 스냅숏만 있을 수 있습니다.Only the snapshot to which you are reverting can currently exist. 그런 다음 되돌리기 작업은 로그를 다시 작성하므로 되돌린 데이터베이스를 사용자 오류 발생 지점으로 나중에 롤포워드할 수 없습니다.The revert operation then rebuilds the log (therefore, you cannot later roll forward a reverted database to the point of user error).

데이터 손실은 스냅숏 생성 이후의 데이터베이스 업데이트로 제한됩니다.Data loss is confined to updates to the database since the snapshot's creation. 되돌린 데이터베이스의 메타데이터는 스냅숏 생성 시의 메타데이터와 동일합니다.The metadata of a reverted database is the same as the metadata at the time of snapshot creation. 그러나 스냅숏으로 되돌리면 전체 텍스트 카탈로그가 모두 삭제됩니다.However, reverting to a snapshot drops all the full-text catalogs.

데이터베이스 스냅숏에서 되돌리기는 미디어 복구용으로 사용할 수 없습니다.Reverting from a database snapshot is not intended for media recovery. 일반 백업 세트와는 달리 데이터베이스 스냅숏은 데이터베이스 파일의 불완전한 복사본입니다.Unlike a regular backup set, the database snapshot is an incomplete copy of the database files. 데이터베이스나 데이터베이스 스냅숏이 손상된 경우 스냅숏에서 되돌릴 수 없는 경우가 많습니다.If either the database or the database snapshot is corrupted, reverting from a snapshot is likely to be impossible. 되돌릴 수 있는 경우에도 손상 문제가 해결될 가능성은 거의 없습니다.Furthermore, even when possible, reverting in the event of corruption is unlikely to correct the problem.

되돌리기 제한 사항Restrictions on Reverting

다음과 같은 경우에는 되돌리기가 지원되지 않습니다.Reverting is unsupported under the following conditions:

  • 원본 데이터베이스에는 읽기 전용 파일 그룹이나 압축 파일 그룹이 포함되어 있는 경우The source database contains any read-only or compressed filegroups.
  • 스냅숏이 만들어질 때 온라인 상태였던 파일이 오프라인 상태인 경우Any files are offline that were online when the snapshot was created.
  • 현재 데이터베이스에 대한 스냅숏이 여러 개 있는 경우More than one snapshot of the database currently exists.

자세한 내용은 데이터베이스를 데이터베이스 스냅숏으로 되돌리기를 참조하세요.For more information, see Revert a Database to a Database Snapshot.

보안Security

백업 작업은 미디어 세트, 백업 세트 또는 이 둘 모두에 대해 암호를 지정할 수 있습니다.A backup operation may optionally specify passwords for a media set, a backup set, or both. 미디어 세트나 백업 세트에 암호가 정의되어 있는 경우 RESTORE 문에서 정확한 암호를 지정해야 합니다.When a password has been defined on a media set or backup set, you must specify the correct password or passwords in the RESTORE statement. 이러한 암호를 지정하면 SQL ServerSQL Server 도구를 사용하여 무단으로 복원 작업을 수행하거나 미디어에 백업 세트를 무단으로 추가하는 작업을 방지할 수 있습니다.These passwords prevent unauthorized restore operations and unauthorized appends of backup sets to media using SQL ServerSQL Server tools. 그러나 암호로 보호된 미디어는 BACKUP 문의 FORMAT 옵션으로 덮어쓸 수 있습니다.However, password-protected media can be overwritten by the BACKUP statement's FORMAT option.

중요

이 암호에 의한 보호 수준은 낮습니다.The protection provided by this password is weak. 권한 유무에 관계없이 사용자가 SQL ServerSQL Server 도구를 사용하여 잘못된 복원을 수행하는 것을 방지합니다.It is intended to prevent an incorrect restore using SQL ServerSQL Server tools by authorized or unauthorized users. 다른 수단을 사용한 백업 데이터 읽기나 암호 바꾸기를 방지하지는 않습니다.It does not prevent the reading of the backup data by other means or the replacement of the password. 이 기능은 유지 관리 모드에 있으며, Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하세요.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.백업을 보호하는 최선의 구현 방법은 백업 테이프를 안전한 장소에 보관하거나 적합한 ACL(액세스 제어 목록)로 보호되는 디스크 파일에 백업하는 것입니다.The best practice for protecting backups is to store backup tapes in a secure location or back up to disk files that are protected by adequate access control lists (ACLs). ACL은 백업이 만들어지는 디렉터리 루트에 설정해야 합니다.The ACLs should be set on the directory root under which backups are created.

참고

Microsoft Azure Blob Storage로 SQL Server 백업 및 복원 관련 정보는 Microsoft Azure Blob Storage 서비스로 SQL Server 백업 및 복원을 참조하세요.For information specific to SQL Server backup and restore with the Microsoft Azure Blob storage, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service.

PermissionsPermissions

복원할 데이터베이스가 없으면 CREATE DATABASE 권한이 있어야 RESTORE를 실행할 수 있습니다.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. 데이터베이스가 있으면 RESTORE 권한은 기본적으로 sysadmindbcreator 고정 서버 역할의 멤버와 데이터베이스의 소유자(dbo)에 설정됩니다. FROM DATABASE_SNAPSHOT 옵션의 경우 데이터베이스가 항상 있습니다.If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database (for the FROM DATABASE_SNAPSHOT option, the database always exists).

멤버 자격 정보를 서버에서 항상 사용할 수 있는 역할에 RESTORE 권한이 제공됩니다.RESTORE permissions are given to roles in which membership information is always readily available to the server. 고정 데이터베이스 역할의 멤버 자격은 데이터베이스가 액세스 가능한 상태이며 손상되지 않은 경우에만 확인할 수 있는데, RESTORE 실행 시 데이터베이스가 항상 이러한 상태인 것은 아니므로 db_owner 고정 데이터베이스 역할의 멤버에게는 RESTORE 권한이 없습니다.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Examples

모든 예에서는 전체 데이터베이스 백업을 수행한 것으로 가정합니다.All the examples assume that a full database backup has been performed.

RESTORE 예에는 다음이 포함됩니다.The RESTORE examples include the following:

참고

추가 예제는 복원 및 복구 개요(SQL Server)에 나열된 복원 방법 항목을 참조하세요.For additional examples, see the restore how-to topics that are listed in Restore and Recovery Overview (SQL Server).

1.A. 전체 데이터베이스 복원Restoring a full database

다음 예에서는 AdventureWorksBackups 논리적 백업 장치에서 전체 데이터베이스 백업을 복원합니다.The following example restores a full database backup from the AdventureWorksBackups logical backup device. 이 장치를 만드는 예는 백업 장치를 참조하세요.For an example of creating this device, see Backup Devices.

RESTORE DATABASE AdventureWorks2012   
   FROM AdventureWorks2012Backups;  

참고

전체 또는 대량 로그 복구 모델을 사용하는 데이터베이스의 경우 SQL ServerSQL Server에서는 대개 데이터베이스를 복원하기 전에 비상 로그 백업을 수행해야 합니다.For a database using the full or bulk-logged recovery model, SQL ServerSQL Server requires in most cases that you back up the tail of the log before restoring the database. 자세한 내용은 비상 로그 백업(SQL Server)을 참조하세요.For more information, see Tail-Log Backups (SQL Server).

[주요 예제][Top of examples]

2.B. 전체 및 차등 데이터베이스 백업 복원Restoring full and differential database backups

다음 예에서는 Z:\SQLServerBackups\AdventureWorks2012.bak 백업 장치에서 전체 데이터베이스 백업을 복원한 다음 차등 백업을 복원합니다. 이 백업 장치에는 전체 데이터베이스 백업 및 차등 백업이 모두 포함되어 있습니다. 이 백업 장치에는 전체 데이터베이스 백업 및 차등 백업이 모두 포함되어 있습니다.The following example restores a full database backup followed by a differential backup from the Z:\SQLServerBackups\AdventureWorks2012.bak backup device, which contains both backups. 복원할 전체 데이터베이스 백업은 장치의 6번째 백업 세트(FILE = 6)이고 차등 데이터베이스 백업은 장치의 9번째 백업 세트(FILE = 9)입니다.The full database backup to be restored is the sixth backup set on the device (FILE = 6), and the differential database backup is the ninth backup set on the device (FILE = 9). 차등 백업이 복구되면 바로 데이터베이스가 복구됩니다.As soon as the differential backup is recovered, the database is recovered.

RESTORE DATABASE AdventureWorks2012  
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'  
   WITH FILE = 6  
      NORECOVERY;  
RESTORE DATABASE AdventureWorks2012  
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'  
   WITH FILE = 9  
      RECOVERY;  

[주요 예제][Top of examples]

3.C. RESTART 구문을 사용하여 데이터베이스 복원Restoring a database using RESTART syntax

다음 예에서는 RESTART 옵션을 사용하여 서버 전원 고장으로 중단된 RESTORE 작업을 다시 시작합니다.The following example uses the RESTART option to restart a RESTORE operation interrupted by a server power failure.

-- This database RESTORE halted prematurely due to power failure.  
RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorksBackups;  
-- Here is the RESTORE RESTART operation.  
RESTORE DATABASE AdventureWorks2012   
   FROM AdventureWorksBackups WITH RESTART;  

[주요 예제][Top of examples]

4.D. 데이터베이스 복원 및 파일 이동Restoring a database and move files

다음 예에서는 전체 데이터베이스와 트랜잭션 로그를 복원하고 복원된 데이터베이스를 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data 디렉터리로 이동합니다.The following example restores a full database and transaction log and moves the restored database into the C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data directory.

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorksBackups  
   WITH NORECOVERY,   
      MOVE 'AdventureWorks2012_Data' TO   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',   
      MOVE 'AdventureWorks2012_Log'   
TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorksBackups  
   WITH RECOVERY;  

[주요 예제][Top of examples]

5.E. BACKUP 및 RESTORE를 사용하여 데이터베이스 복사Copying a database using BACKUP and RESTORE

다음 예에서는 BACKUPRESTORE 문을 사용하여 AdventureWorks2012AdventureWorks2012 데이터베이스의 복사본을 만듭니다.The following example uses both the BACKUP and RESTORE statements to make a copy of the AdventureWorks2012AdventureWorks2012 database. MOVE 문을 사용하면 데이터와 로그 파일이 지정한 위치로 복원됩니다.The MOVE statement causes the data and log file to be restored to the specified locations. RESTORE FILELISTONLY 문은 복원할 데이터베이스에 있는 파일의 수와 이름을 확인하는 데 사용합니다.The RESTORE FILELISTONLY statement is used to determine the number and names of the files in the database being restored. 데이터베이스의 새 복사본 이름은 TestDB입니다.The new copy of the database is named TestDB. 자세한 내용은 RESTORE FILELISTONLY(Transact-SQL)를 참조하세요.For more information, see RESTORE FILELISTONLY (Transact-SQL).

BACKUP DATABASE AdventureWorks2012   
   TO AdventureWorksBackups ;  

RESTORE FILELISTONLY   
   FROM AdventureWorksBackups ;  

RESTORE DATABASE TestDB   
   FROM AdventureWorksBackups   
   WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf',  
   MOVE 'AdventureWorks2012_Log' TO 'C:\MySQLServer\testdb.ldf';  
GO  

[주요 예제][Top of examples]

6.F. STOPAT를 사용하여 지정 시간으로 복원Restoring to a point-in-time using STOPAT

다음 예에서는 12:00 AM , April 15, 2020 상태로 데이터베이스를 복원하고 여러 로그 백업이 연관된 복원 작업을 보여 줍니다.The following example restores a database to its state as of 12:00 AM on April 15, 2020 and shows a restore operation that involves multiple log backups. 백업 장치 AdventureWorksBackups에서 복원할 전체 데이터베이스 백업은 해당 장치의 세 번째 백업 세트(FILE = 3)이고, 첫 번째 로그 백업은 네 번째 백업 세트(FILE = 4)이고, 두 번째 로그 백업은 다섯 번째 백업 세트(FILE = 5)입니다.On the backup device, AdventureWorksBackups, the full database backup to be restored is the third backup set on the device (FILE = 3), the first log backup is the fourth backup set (FILE = 4), and the second log backup is the fifth backup set (FILE = 5).

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorksBackups  
   WITH FILE=3, NORECOVERY;  

RESTORE LOG AdventureWorks2012  
   FROM AdventureWorksBackups  
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  

RESTORE LOG AdventureWorks2012  
   FROM AdventureWorksBackups  
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;  

[주요 예제][Top of examples]

G.G. 트랜잭션 로그를 표시까지 복원Restoring the transaction log to a mark

다음 예에서는 트랜잭션 로그를 복원하여 ListPriceUpdate라는 표시된 트랜잭션에 나타냅니다.The following example restores the transaction log to the mark in the marked transaction named ListPriceUpdate.

USE AdventureWorks2012  
GO  
BEGIN TRANSACTION ListPriceUpdate  
   WITH MARK 'UPDATE Product list prices';  
GO  

UPDATE Production.Product  
   SET ListPrice = ListPrice * 1.10  
   WHERE ProductNumber LIKE 'BK-%';  
GO  

COMMIT TRANSACTION ListPriceUpdate;  
GO  

-- Time passes. Regular database   
-- and log backups are taken.  
-- An error occurs in the database.  
USE master;  
GO  

RESTORE DATABASE AdventureWorks2012  
FROM AdventureWorksBackups  
WITH FILE = 3, NORECOVERY;  
GO  

RESTORE LOG AdventureWorks2012  
   FROM AdventureWorksBackups   
   WITH FILE = 4,  
   RECOVERY,   
   STOPATMARK = 'UPDATE Product list prices';  

[주요 예제][Top of examples]

H.H. TAPE 구문을 사용하여 복원Restoring using TAPE syntax

다음 예에서는 TAPE 백업 장치에서 전체 데이터베이스 백업을 복원합니다.The following example restores a full database backup from a TAPE backup device.

RESTORE DATABASE AdventureWorks2012   
   FROM TAPE = '\\.\tape0';  

[주요 예제][Top of examples]

I.I. FILE 및 FILEGROUP 구문을 사용하여 복원Restoring using FILE and FILEGROUP syntax

다음 예에서는 하나의 보조 파일 그룹과 하나의 트랜잭션 로그인 두 파일이 있는 MyDatabase라는 데이터베이스를 복원합니다.The following example restores a database named MyDatabase that has two files, one secondary filegroup, and one transaction log. 이 데이터베이스는 전체 복구 모델을 사용합니다.The database uses the full recovery model.

데이터베이스 백업은 MyDatabaseBackups라는 논리적 백업 장치에 있는 미디어 세트의 9번째 백업 세트입니다.The database backup is the ninth backup set in the media set on a logical backup device named MyDatabaseBackups. 그런 다음 10 장치의 다음 3개 백업 세트(11, 12MyDatabaseBackups)에 있는 3개 로그 백업이 WITH NORECOVERY를 사용하여 복원됩니다.Next, three log backups, which are in the next three backup sets (10, 11, and 12) on the MyDatabaseBackups device, are restored by using WITH NORECOVERY. 마지막 로그 백업을 복원한 다음 데이터베이스가 복구됩니다.After restoring the last log backup, the database is recovered.

참고

모든 로그 백업이 복원되기 전에 너무 빨리 복구하는 경우를 방지하기 위해 복구 작업은 별도의 단계로 수행됩니다.Recovery is performed as a separate step to reduce the possibility of you recovering too early, before all of the log backups have been restored.

RESTORE DATABASE에는 두 가지 유형의 FILE 옵션이 있습니다.In the RESTORE DATABASE, notice that there are two types of FILE options. 백업 장치 이름 앞에 있는 FILE 옵션은 백업 세트에서 복원될 데이터베이스 파일의 논리적 파일 이름을 지정합니다(예: FILE = 'MyDatabase_data_1').The FILE options preceding the backup device name specify the logical file names of the database files that are to be restored from the backup set; for example, FILE = 'MyDatabase_data_1'. 이 백업 세트는 미디어 세트의 첫 번째 데이터베이스 백업이 아니므로 미디어 세트에서의 해당 위치는 FILE 절의 WITH 옵션인 FILE=9를 사용하여 나타냅니다.This backup set is not the first database backup in the media set; therefore, its position in the media set is indicated by using the FILE option in the WITH clause, FILE=9.

RESTORE DATABASE MyDatabase  
   FILE = 'MyDatabase_data_1',  
   FILE = 'MyDatabase_data_2',  
   FILEGROUP = 'new_customers'  
   FROM MyDatabaseBackups  
   WITH   
      FILE = 9,  
      NORECOVERY;  
GO  
-- Restore the log backups.  
RESTORE LOG MyDatabase  
   FROM MyDatabaseBackups  
   WITH FILE = 10,   
      NORECOVERY;  
GO  
RESTORE LOG MyDatabase  
   FROM MyDatabaseBackups  
   WITH FILE = 11,   
      NORECOVERY;  
GO  
RESTORE LOG MyDatabase  
   FROM MyDatabaseBackups  
   WITH FILE = 12,   
      NORECOVERY;  
GO  
--Recover the database:  
RESTORE DATABASE MyDatabase WITH RECOVERY;  
GO  

[주요 예제][Top of examples]

J.J. 데이터베이스 스냅숏으로 되돌리기Reverting from a database snapshot

다음 예에서는 데이터베이스를 데이터베이스 스냅숏으로 되돌립니다.The following example reverts a database to a database snapshot. 이 예에서는 현재 하나의 스냅숏만 데이터베이스에 있는 것으로 가정합니다.The example assumes that only one snapshot currently exists on the database. 이 데이터베이스 스냅숏을 만드는 방법의 예는 데이터베이스 스냅숏 만들기 (Transact-SQL)을 참조하세요.For an example of how to create this database snapshot, see Create a Database Snapshot (Transact-SQL).

참고

스냅숏으로 되돌리면 전체 텍스트 카탈로그가 모두 삭제됩니다.Reverting to a snapshot drops all the full-text catalogs.

USE master;    
RESTORE DATABASE AdventureWorks2012 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';  
GO  

자세한 내용은 데이터베이스를 데이터베이스 스냅숏으로 되돌리기를 참조하세요.For more information, see Revert a Database to a Database Snapshot.

[주요 예제][Top of examples]

K.K. Microsoft Azure Blob Storage 서비스에서 복원Restoring from the Microsoft Azure Blob storage service

아래의 세 예제에서는 Microsoft Azure Storage 서비스를 사용하게 됩니다.The three examples below involve the use of the Microsoft Azure storage service. 저장소 계정 이름은 mystorageaccount입니다.The storage Account name is mystorageaccount. 데이터 파일의 컨테이너는 myfirstcontainer입니다.The container for data files is called myfirstcontainer. 백업 파일의 컨테이너는 mysecondcontainer입니다.The container for backup files is called mysecondcontainer. 각 컨테이너에 대한 읽기, 쓰기, 삭제 및 나열 권한이 있는 저장된 액세스 정책을 만들었습니다.A stored access policy has been created with read, write, delete, and list, rights for each container. 저장된 액세스 정책에 연결된 공유 액세스 서명을 사용하여 SQL Server 자격 증명을 만들었습니다.SQL Server credentials were created using Shared Access Signatures that are associated with the Stored Access Policies. Microsoft Azure Blob Storage로 SQL Server 백업 및 복원 관련 정보는 Microsoft Azure Blob Storage 서비스로 SQL Server 백업 및 복원을 참조하세요.For information specific to SQL Server backup and restore with the Microsoft Azure Blob storage, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service.

K1. Microsoft Azure Storage 서비스에서 전체 데이터베이스 백업 복원K1. Restore a full database backup from the Microsoft Azure storage service
mysecondcontainer에 있는 Sales의 전체 데이터베이스 백업이 myfirstcontainer에 복원됩니다.A full database backup, located at mysecondcontainer, of Sales will be restored to myfirstcontainer. Sales는 현재 서버에 없습니다.Sales does not currently exist on the server.

RESTORE DATABASE Sales
  FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'   
  WITH  MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf', 
  MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf', 
  STATS = 10;

K2. Microsoft Azure Storage 서비스에서 로컬 저장소로 전체 데이터베이스 백업 복원K2. Restore a full database backup from the Microsoft Azure storage service to local storage
mysecondcontainer에 있는 Sales의 전체 데이터베이스 백업이 로컬 저장소에 복원됩니다.A full database backup, located at mysecondcontainer, of Sales will be restored to local storage. Sales는 현재 서버에 없습니다.Sales does not currently exist on the server.

RESTORE DATABASE Sales
  FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'   
  WITH  MOVE 'Sales_Data1' to 'H:\DATA\Sales_Data1.mdf', 
  MOVE 'Sales_log' to 'O:\LOG\Sales_log.ldf', 
  STATS = 10;

K3. 로컬 저장소에서 Microsoft Azure Storage 서비스로 전체 데이터베이스 백업 복원K3. Restore a full database backup from local storage to the Microsoft Azure storage service

RESTORE DATABASE Sales
  FROM DISK = 'E:\BAK\Sales.bak'
  WITH  MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf', 
  MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf', 
  STATS = 10;

[주요 예제][Top of examples]

훨씬 더 많은 추가 정보!!Much more information!!

SQL ServerSQL Server * SQL Database
Managed Instance *
* SQL Database
Managed Instance *
Parallel
Data Warehouse
Parallel
Data Warehouse

 

Azure SQL Database Managed InstanceAzure SQL Database Managed Instance

이 명령을 사용하면 Azure Blob Storage 계정의 전체 데이터베이스 백업(전체 복원)에서 전체 데이터베이스를 복원할 수 있습니다.This command enables you to restore an entire database from a full database backup (a complete restore) from Azure Blob Storage account.

지원되는 다른 복원 명령은 다음을 참조하세요.For other supported RESTORE commands, see:

중요

Azure SQL Database Managed Instance 자동 백업에서 복원하려면 SQL Database 복원을 참조하세요.To restore from Azure SQL Database Managed Instance automatic backups, see SQL Database Restore.

구문Syntax

--To Restore an Entire Database from a Full database backup (a Complete Restore):  
RESTORE DATABASE { database_name | @database_name_var }   
 FROM URL = { 'physical_device_name' | @physical_device_name_var } [ ,...n ]   
[;]  

인수Arguments

DATABASEDATABASE

대상 데이터베이스를 지정합니다.Specifies the target database.

FROM URLFROM URL

복원 작업에 사용되는 URL에 배치된 하나 이상의 백업 장치를 지정합니다.Specifies one or more backup devices placed on URLs that will be used for the restore operation. URL 형식은 Microsoft Azure Storage 서비스에서 백업을 복구하는 데 사용됩니다.The URL format is used for restoring backups from the Microsoft Azure storage service.

중요

URL에서 복원할 때 여러 장치에서 복원하려면 SAS(공유 액세스 서명) 토큰을 사용해야 합니다.In order to restore from multiple devices when restoring from URL, you must use Shared Access Signature (SAS) tokens. 공유 액세스 서명 만들기에 대한 자세한 내용은 URL에 대한 SQL Server 백업Powershell로 Azure Storage의 SAS(공유 액세스 서명) 토큰이 있는 SQL 자격 증명 만들기 간소화를 참조하세요.For examples creating a Shared Access Signature, see SQL Server Backup to URL and Simplifying creation of SQL Credentials with Shared Access Signature (SAS) tokens on Azure Storage with Powershell.

nn
쉼표로 구분된 목록에 백업 장치를 최대 64개까지 지정할 수 있음을 나타내는 자리 표시자입니다.Is a placeholder that indicates that up to 64 backup devices may be specified in a comma-separated list.

일반적인 주의 사항General Remarks

전제 조건으로 BLOB 저장소 계정 URL과 일치하는 이름으로 자격 증명을 만들고, 공유 액세스 서명을 암호로 배치해야 합니다.As a prerequisite, you need to create a credential with the name that matches the blob storage account url, and Shared Access Signature placed as secret. RESTORE 명령은 BLOB 저장소 URL을 사용하여 자격 증명을 조회하고 백업 장치를 읽는 데 필요한 정보를 찾습니다.RESTORE command will lookup credential using the blob storage url to find the information required to read the backup device.

RESTORE 작업은 비동기식으로, 클라이언트 연결을 중단하는 경우에도 복원은 계속됩니다.RESTORE operation is asynchronous - the restore continues even if client connection breaks. 사용자 연결을 드롭하는 경우 복원 작업의 상태에 대한 sys.dm_operation_status 보기를 확인할 수 있습니다(데이터베이스의 CREATE 및 DROP 경우 포함).If your connection is dropped, you can check sys.dm_operation_status view for the status of a restore operation (as well as for CREATE and DROP database).

다음 데이터베이스 옵션은 설정/재정의되며 나중에 변경할 수 없습니다.The following database options are set/overridden and cannot be changed later:

  • NEW_BROKER(broker가 .bak 파일에서 활성화되지 않은 경우)NEW_BROKER (if broker is not enabled in .bak file)
  • ENABLE_BROKER(broker가 .bak 파일에서 활성화되지 않은 경우)ENABLE_BROKER (if broker is not enabled in .bak file)
  • AUTO_CLOSE=OFF(.bak 파일의 데이터베이스에 AUTO_CLOSE=ON이 있는 경우)AUTO_CLOSE=OFF (if a database in .bak file has AUTO_CLOSE=ON)
  • RECOVERY FULL(.bak 파일의 데이터베이스에 SIMPLE 또는 BULK_LOGGED 복구 모드가 있는 경우)RECOVERY FULL (if a database in .bak file has SIMPLE or BULK_LOGGED recovery mode)
  • 메모리에 최적화된 파일 그룹이 추가되고 원본 .bak 파일에 없는 경우 XTP를 호출합니다.Memory optimized filegroup is added and called XTP if it was not in the source .bak file. 모든 기존 메모리에 최적화된 파일 그룹은 XTP로 이름이 변경됩니다.Any existing memory optimized filegroup is renamed to XTP
  • SINGLE_USER 및 RESTRICTED_USER 옵션은 MULTI_USER로 변환됩니다.SINGLE_USER and RESTRICTED_USER options are converted to MULTI_USER

제한 사항 - SQL Database Managed InstanceLimitations - SQL Database Managed Instance

다음과 같은 제한이 적용됩니다.These limitations apply:

  • 여러 백업 세트를 포함하는 .BAK 파일은 복원할 수 없습니다..BAK files containing multiple backup sets cannot be restored.
  • 여러 로그 파일을 포함하는 .BAK 파일은 복원할 수 없습니다..BAK files containing multiple log files cannot be restored.
  • .bak에 FILESTREAM 데이터가 포함된 경우 복원이 실패합니다.Restore will fail if .bak contains FILESTREAM data.
  • 활성 메모리 내 개체가 있는 데이터베이스를 포함하는 백업은 범용 관리되는 인스턴스로 복원될 수 없습니다.Backups containing databases that have active In-memory objects cannot be restored to a General Purpose managed instance.
  • 읽기 전용 모드인 데이터베이스를 포함하는 백업은 현재 복원할 수 없습니다.Backups containing databases in read-only mode cannot currently be restored. 이 제한 사항은 곧 삭제될 예정입니다.This limitation will be removed soon.

자세한 내용은 관리되는 인스턴스를 참조하세요.For more information, see Managed Instance

암호화된 데이터베이스 복원Restoring an Encrypted Database

암호화된 데이터베이스를 복원하려면 데이터베이스를 암호화하는 데 사용된 인증서 또는 비대칭 키에 대한 액세스 권한이 있어야 합니다.To restore a database that is encrypted, you must have access to the certificate or asymmetric key that was used to encrypt the database. 인증서 또는 비대칭 키가 없으면 데이터베이스를 복원할 수 없습니다.Without the certificate or asymmetric key, the database cannot be restored. 따라서 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서는 백업이 필요한 동안에는 유지되어야 합니다.As a result, the certificate that is used to encrypt the database encryption key must be retained as long as the backup is needed. 자세한 내용은 SQL Server Certificates and Asymmetric Keys을 참조하세요.For more information, see SQL Server Certificates and Asymmetric Keys.

PermissionsPermissions

RESTORE를 실행하려면 사용자에게 CREATE DATABASE 권한이 있어야 합니다.The user must have CREATE DATABASE permissions to be able to execute RESTORE.

CREATE LOGIN mylogin WITH PASSWORD = 'Very Strong Pwd123!';
GRANT CREATE ANY DATABASE TO [mylogin];

멤버 자격 정보를 서버에서 항상 사용할 수 있는 역할에 RESTORE 권한이 제공됩니다.RESTORE permissions are given to roles in which membership information is always readily available to the server. 고정 데이터베이스 역할의 멤버 자격은 데이터베이스가 액세스 가능한 상태이며 손상되지 않은 경우에만 확인할 수 있는데, RESTORE 실행 시 데이터베이스가 항상 이러한 상태인 것은 아니므로 db_owner 고정 데이터베이스 역할의 멤버에게는 RESTORE 권한이 없습니다.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Examples

다음 예제에서는 URL에서 자격 증명 생성을 비롯한 복사 전용 데이터베이스 백업을 복원합니다.The following examples restore a copy only database backup from URL, including the creation of a credential.

1.A. 네 개의 백업 장치에서 데이터베이스를 복원합니다.Restore database from four backup devices.


-- Create credential
CREATE CREDENTIAL [https://mybackups.blob.core.windows.net/wide-world-importers]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
       SECRET = 'sv=2017-11-09&ss=bq&srt=sco&sp=rl&se=2022-06-19T22:41:07Z&st=2018-06-01T14:41:07Z&spr=https&sig=s7wddcf0w%3D';
GO
-- Restore database
RESTORE DATABASE WideWorldImportersStandard
FROM URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/00-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/01-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/02-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/03-WideWorldImporters-Standard.bak'

데이터베이스가 이미 있는 경우 다음 오류가 표시됩니다.The following error is shown if the database already exists:

Msg 1801, Level 16, State 1, Line 9
Database 'WideWorldImportersStandard' already exists. Choose a different database name.

2.B. 변수를 통해 지정된 데이터베이스를 복원합니다.Restore database specified via variable.

DECLARE @db_name sysname = 'WideWorldImportersStandard';
DECLARE @url nvarchar(400) = N'https://mybackups.blob.core.windows.net/wide-world-importers/WideWorldImporters-Standard.bak';

RESTORE DATABASE @db_name 
FROM URL = @url

3.C. RESTORE 문의 진행 상태를 추적합니다.Track progress of restore statement.

SELECT  query = a.text, start_time, percent_complete,
        eta = dateadd(second,estimated_completion_time/1000, getdate()) 
FROM sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
WHERE r.command = 'RESTORE DATABASE'

참고

이 보기에는 두 개의 복원 요청이 표시될 수 있습니다.This view will probably show two restore requests. 하나는 클라이언트가 보낸 원래 RESTORE 문이고, 다른 하나는 클라이언트 연결에 실패하더라도 실행되는 백그라운드 RESTORE 문입니다.One is original RESTORE statement sent by the client, and the another one is background RESTORE statement that is executing even if the client connection fails.

SQL ServerSQL Server SQL Database
Managed Instance
SQL Database
Managed Instance
* 병렬
데이터 웨어하우스 *
* Parallel
Data Warehouse *

 

병렬 데이터 웨어하우스Parallel Data Warehouse

데이터베이스 백업에서 병렬 데이터 웨어하우스Parallel Data Warehouse 어플라이언스로 병렬 데이터 웨어하우스Parallel Data Warehouse 사용자 데이터베이스를 복원합니다.Restores a 병렬 데이터 웨어하우스Parallel Data Warehouse user database from a database backup to a 병렬 데이터 웨어하우스Parallel Data Warehouse appliance. 데이터베이스는 이전에 병렬 데이터 웨어하우스Parallel Data WarehouseBACKUP DATABASE(병렬 데이터 웨어하우스) 명령으로 만든 백업에서 복원됩니다.The database is restored from a backup that was previously created by the 병렬 데이터 웨어하우스Parallel Data WarehouseBACKUP DATABASE (Parallel Data Warehouse) command. 백업 및 복원 작업을 사용하여 재해 복구 계획을 작성하거나 한 어플라이언스에서 다른 어플라이언스로 데이터베이스를 이동합니다.Use the backup and restore operations to build a disaster recovery plan, or to move databases from one appliance to another.

참고

master 복원에는 어플라이언스 로그인 정보 복원이 포함됩니다.Restoring master includes restoring appliance login information. master를 복원하려면 Configuration Manager 도구의 master 데이터베이스 복원(Transact-SQL) 페이지를 사용합니다.To restore master, use the Restore the master Database (Transact-SQL) page in the Configuration Manager tool. 제어 노드에 액세스할 수 있는 관리자가 이 작업을 수행할 수 있습니다.An administrator with access to the Control node can perform this operation.
병렬 데이터 웨어하우스Parallel Data Warehouse 데이터베이스 백업에 대한 자세한 내용은 Parallel Data Warehouse product documentation(병렬 데이터 웨어하우스 제품 설명서)Parallel Data Warehouse product documentation에 있는 “백업 및 복원”을 참조하세요.For more information about 병렬 데이터 웨어하우스Parallel Data Warehouse database backups, see "Backup and Restore" in the Parallel Data Warehouse product documentation(병렬 데이터 웨어하우스 제품 설명서)Parallel Data Warehouse product documentation.

구문Syntax


-- Restore the master database  
-- Use the Configuration Manager tool.  

Restore a full user database backup.  
RESTORE DATABASE database_name   
    FROM DISK = '\\UNC_path\full_backup_directory'  
[;]  

--Restore a full user database backup and then a differential backup.  
RESTORE DATABASE database_name  
    FROM DISK = '\\UNC_path\differential_backup_directory'   
    WITH [ ( ] BASE = '\\UNC_path\full_backup_directory' [ ) ]   
[;]  

--Restore header information for a full or differential user database backup.  
RESTORE HEADERONLY   
    FROM DISK = '\\UNC_path\backup_directory'  
[;]  

인수Arguments

RESTORE DATABASE database_nameRESTORE DATABASE database_name
사용자 데이터베이스를 database_name이라는 데이터베이스로 복원하도록 지정합니다.Specifies to restore a user database to a database called database_name. 복원된 데이터베이스 이름은 백업했던 원본 데이터베이스와 다를 수 있습니다.The restored database can have a different name than the source database that was backed up. database_name은 대상 어플라이언스에 데이터베이스로 이미 존재할 수 없습니다.database_name cannot already exist as a database on the destination appliance. 허용된 데이터베이스 이름에 대한 자세한 내용은 Parallel Data Warehouse product documentation(병렬 데이터 웨어하우스 제품 설명서)Parallel Data Warehouse product documentation의 “개체 명명 규칙”을 참조하세요.For more details on permitted database names, see "Object Naming Rules" in the Parallel Data Warehouse product documentation(병렬 데이터 웨어하우스 제품 설명서)Parallel Data Warehouse product documentation.

사용자 데이터베이스를 복원하면 전체 데이터베이스 백업을 복원한 다음, 선택적으로 차등 백업을 어플라이언스에 복원합니다.Restoring a user database restores a full database backup and then optionally restores a differential backup to the appliance. 사용자 데이터베이스 복원에는 데이터베이스 사용자 및 데이터베이스 역할이 포함됩니다.A restore of a user database includes restoring database users, and database roles.

FROM DISK = '\\UNC_path\backup_directory'FROM DISK = '\\UNC_path\backup_directory'
병렬 데이터 웨어하우스Parallel Data Warehouse가 백업 파일을 복원할 네트워크 경로 및 디렉터리입니다.The network path and directory from which 병렬 데이터 웨어하우스Parallel Data Warehouse will restore the backup files. 예: FROM DISK = ‘\\xxx.xxx.xxx.xxx\backups\2012\Monthly\08.2012.Mybackup’.For example, FROM DISK = '\\xxx.xxx.xxx.xxx\backups\2012\Monthly\08.2012.Mybackup'.

backup_directorybackup_directory
전체 또는 차등 백업이 포함된 디렉터리의 이름을 지정합니다.Specifies the name of a directory that contains the full or differential backup. 예를 들어 전체 또는 차등 백업에서 RESTORE HEADERONLY 작업을 수행할 수 있습니다.For example, you can perform a RESTORE HEADERONLY operation on a full or differential backup.

full_backup_directoryfull_backup_directory
전체 백업이 포함된 디렉터리의 이름을 지정합니다.Specifies the name of a directory that contains the full backup.

differential_backup_directorydifferential_backup_directory
차등 백업이 포함된 디렉터리의 이름을 지정합니다.Specifies the name of the directory that contains the differential backup.

  • 경로 및 백업 디렉터리는 이미 존재해야 하며 정규화된 UNC(범용 명명 규칙) 경로로 지정해야 합니다.The path and backup directory must already exist and must be specified as a fully qualified universal naming convention (UNC) path.
  • 백업 디렉터리 경로는 로컬 경로일 수 없으며 병렬 데이터 웨어하우스Parallel Data Warehouse 어플라이언스 노드의 위치일 수 없습니다.The path to the backup directory cannot be a local path and it cannot be a location on any of the 병렬 데이터 웨어하우스Parallel Data Warehouse appliance nodes.
  • UNC 경로 및 백업 디렉터리 이름의 최대 길이는 200자입니다.The maximum length of the UNC path and backup directory name is 200 characters.
  • 서버 또는 호스트는 IP 주소로 지정해야 합니다.The server or host must be specified as an IP address.

RESTORE HEADERONLYRESTORE HEADERONLY
한 명의 사용자 데이터베이스 백업에 대한 헤더 정보만 반환하도록 지정합니다.Specifies to return only the header information for one user database backup. 다른 필드 간에 헤더의 텍스트 설명 및 백업 이름을 포함합니다.Among other fields, the header includes the text description of the backup, and the backup name. 백업 이름은 백업 파일을 저장하는 디렉터리의 이름과 같을 필요는 없습니다.The backup name does not need to be the same as the name of the directory that stores the backup files.

RESTORE HEADERONLY 결과는 SQL ServerSQL Server RESTORE HEADERONLY 결과 뒤에 패턴화됩니다.RESTORE HEADERONLY results are patterned after the SQL ServerSQL Server RESTORE HEADERONLY results. 결과에는 50개 이상의 열이 있으며 모두 병렬 데이터 웨어하우스Parallel Data Warehouse에서 사용되지 않습니다.The result has over 50 columns, which are not all used by 병렬 데이터 웨어하우스Parallel Data Warehouse. SQL ServerSQL Server RESTORE HEADERONLY 결과의 열에 대한 설명은 RESTORE HEADERONLY(Transact-SQL)를 참조하세요.For a description of the columns in the SQL ServerSQL Server RESTORE HEADERONLY results, see RESTORE HEADERONLY (Transact-SQL).

PermissionsPermissions

CREATE ANY DATABASE 권한이 필요합니다.Requires the CREATE ANY DATABASE permission.

백업 디렉터리에 액세스하고 읽을 수 있는 권한이 있는 Windows 계정이 필요합니다.Requires a Windows account that has permission to access and read from the backup directory. 또한 Windows 계정 이름 및 암호를 병렬 데이터 웨어하우스Parallel Data Warehouse에 저장해야 합니다.You must also store the Windows account name and password in 병렬 데이터 웨어하우스Parallel Data Warehouse.

오류 처리Error Handling

RESTORE DATABASE 명령은 다음과 같은 조건에서 오류를 발생시킵니다.The RESTORE DATABASE command results in errors under the following conditions:

  • 저장할 데이터베이스의 이름이 이미 대상 어플라이언스에 있습니다.The name of the database to restore already exists on the target appliance. 이를 방지하려면 고유한 데이터베이스 이름을 선택하거나 복원을 실행하기 전에 기존 데이터베이스를 삭제합니다.To avoid this, choose a unique database name, or drop the existing database before running the restore.
  • 백업 디렉터리에 백업 파일의 잘못된 집합이 있습니다.There is an invalid set of backup files in the backup directory.
  • 로그인 권한이 데이터베이스를 복원하기에 충분하지 않습니다.The login permissions are not sufficient to restore a database.
  • 병렬 데이터 웨어하우스Parallel Data Warehouse에 백업 파일이 저장될 네트워크 위치에 대한 올바른 사용 권한이 없습니다.does not have the correct permissions to the network location where the backup files are located.
  • 백업 디렉터리에 대한 네트워크 위치가 존재하지 않거나 사용할 수 없습니다.The network location for the backup directory does not exist, or is not available.
  • 계산 노드 또는 제어 노드에 충분한 디스크 공간이 없습니다.There is insufficient disk space on the Compute nodes or Control node. 병렬 데이터 웨어하우스Parallel Data Warehouse는 복원을 시작하기 전에 어플라이언스에 충분한 디스크 공간이 있는지를 확인하지 않습니다.does not confirm that sufficient disk space exists on the appliance before initiating the restore. 따라서 RESTORE DATABASE 문을 실행하는 동안 디스크 공간 부족 오류가 발생할 가능성이 있습니다.Therefore, it is possible to generate an out-of-disk-space error while running the RESTORE DATABASE statement. 디스크 공간이 부족하면 병렬 데이터 웨어하우스Parallel Data Warehouse는 복원을 롤백합니다.When insufficient disk space occurs, 병렬 데이터 웨어하우스Parallel Data Warehouse rolls back the restore.
  • 데이터베이스를 복원하는 대상 어플라이언스는 데이터베이스를 백업한 원본 어플라이언스보다 계산 노드가 더 적습니다.The target appliance to which the database is being restored has fewer Compute nodes than the source appliance from which the database was backed up.
  • 데이터베이스 복원은 트랜잭션 내에서 시도됩니다.The database restore is attempted from within a transaction.

일반적인 주의 사항General Remarks

병렬 데이터 웨어하우스Parallel Data Warehouse는 데이터베이스 복원의 성공 여부를 추적합니다.tracks the success of database restores. 차등 데이터베이스 백업을 복원하기 전에 병렬 데이터 웨어하우스Parallel Data Warehouse는 성공적으로 전체 데이터베이스 복원이 완료되었는지 확인합니다.Before restoring a differential database backup, 병렬 데이터 웨어하우스Parallel Data Warehouse verifies the full database restore finished successfully.

복원 후 사용자 데이터베이스는 데이터베이스 호환성 수준 120을 갖게 됩니다.After a restore, the user database will have database compatibility level 120. 이는 원래 호환성 수준에 관계 없이 모든 데이터베이스에 마찬가지입니다.This is true for all databases regardless of their original compatibility level.

계산 노드 수가 더 많은 어플라이언스에 복원Restoring to an Appliance With a Larger Number of Compute Nodes
재배포하면 트랜잭션 로그가 증가하므로 작은 어플라이언스에서 큰 어플라이언스로 데이터베이스를 복원한 후 DBCC SHRINKLOG(Azure SQL Data Warehouse)를 실행합니다.Run DBCC SHRINKLOG (Azure SQL Data Warehouse) after restoring a database from a smaller to larger appliance since redistribution will increase transaction log.

계산 노드 수가 많은 어플라이언스로 백업을 복원하면 계산 노드 수에 비례하여 할당된 데이터베이스 크기가 커집니다.Restoring a backup to an appliance with a larger number of Compute nodes grows the allocated database size in proportion to the number of Compute nodes.

예를 들어 60GB의 데이터베이스를 2개 노드 어플라이언스(노드당 30GB)에서 6개 노드 어플라이언스로 복원하는 경우 병렬 데이터 웨어하우스Parallel Data Warehouse는 6개 노드 어플라이언스에서 180GB 데이터베이스(노드당 30GB의 6개 노드)를 만듭니다.For example, when restoring a 60 GB database from a 2-node appliance (30 GB per node) to a 6-node appliance, 병렬 데이터 웨어하우스Parallel Data Warehouse creates a 180 GB database (6 nodes with 30 GB per node) on the 6-node appliance. 병렬 데이터 웨어하우스Parallel Data Warehouse는 처음에 데이터베이스를 원본 구성에 일치하도록 2개 노드로 복원한 다음, 6개 노드 모두에 데이터를 다시 배포합니다.initially restores the database to 2 nodes to match the source configuration, and then redistributes the data to all 6 nodes.

재배포 후 각 계산 노드는 더 작은 원본 어플라이언스에서 각 계산 노드에 비해 더 적은 실제 데이터와 더 많은 여유 공간을 포함하게 됩니다.After the redistribution each Compute node will contain less actual data and more free space than each Compute node on the smaller source appliance. 데이터베이스에 더 많은 데이터를 추가하려면 추가 공간을 사용합니다.Use the additional space to add more data to the database. 복원된 데이터베이스 크기가 필요한 것보다 더 큰 경우 ALTER DATABASE(병렬 데이터 웨어하우스)를 사용하여 데이터베이스 파일 크기를 축소할 수 있습니다.If the restored database size is larger than you need, you can use ALTER DATABASE (Parallel Data Warehouse) to shrink the database file sizes.

제한 사항Limitations and Restrictions

이러한 제한 사항의 경우 원본 어플라이언스는 데이터베이스 백업을 만든 어플라이언스이며, 대상 어플라이언스는 데이터베이스를 복원할 어플라이언스입니다.For these limitations and restrictions, the source appliance is the appliance from which the database backup was created, and the target appliance is the appliance to which the database will be restored.

  • 데이터베이스 복원은 통계를 자동으로 빌드하지 않습니다.Restoring a database does not automatically rebuild statistics.
  • 하나의 RESTORE DATABASE 또는 BACKUP DATABASE 문은 언제든지 어플라이언스에서 실행할 수 있습니다.Only one RESTORE DATABASE or BACKUP DATABASE statement can be running on the appliance at any given time. 동시에 여러 백업 및 복원 명령문이 제출되면 어플라이언스는 이를 큐에 배치하고 한 번에 하나씩 처리합니다.If multiple backup and restore statements are submitted concurrently, the appliance will put them into a queue and process them one at a time.
  • 데이터베이스 백업은 원본 어플라이언스에 비해 계산 노드가 동일하거나 더 많은 병렬 데이터 웨어하우스Parallel Data Warehouse 대상 어플라이언스에 복원할 수 있습니다.You can only restore a database backup to a 병렬 데이터 웨어하우스Parallel Data Warehouse target appliance that has the same number or more Compute nodes than the source appliance. 대상 어플라이언스는 원본 어플라이언스보다 계산 노드가 더 많아야 합니다.The target appliance cannot have fewer Compute nodes than the source appliance.
  • SQL Server 2012 PDW 하드웨어가 있는 어플라이언스에서 만든 백업을 SQL Server 2008 R2 하드웨어가 있는 어플라이언스에 복원할 수 없습니다.You cannot restore a backup that was created on an appliance that has SQL Server 2012 PDW hardware to an appliance that has SQL Server 2008 R2 hardware. 처음에 SQL Server 2008 R2 PDW 하드웨어와 함께 어플라이언스를 구매했고 현재 SQL Server 2012 PDW 소프트웨어를 실행하는 경우에도 마찬가지입니다.This holds true even if the appliance was originally purchased with the SQL Server 2008 R2 PDW hardware and is now running SQL Server 2012 PDW software.

잠금Locking

DATABASE 개체에서 배타적 잠금을 사용합니다.Takes an exclusive lock on the DATABASE object.

Examples

1.A. 간단한 RESTORE 예Simple RESTORE examples

다음 예에서는 전체 백업을 SalesInvoices2013 데이터베이스에 복원합니다.The following example restores a full backup to the SalesInvoices2013 database. 백업 파일은 \\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full 디렉터리에 저장됩니다.The backup files are stored in the \\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full directory. SalesInvoices2013 데이터베이스는 대상 어플라이언스에 이미 존재할 수 없으며, 그렇지 않으면 이 명령은 오류가 발생하여 실패합니다.The SalesInvoices2013 database cannot already exist on the target appliance or this command will fail with an error.

RESTORE DATABASE SalesInvoices2013  
FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full';  

2.B. 전체 및 차등 백업 복원Restore a full and differential backup

다음 예에서는 SalesInvoices2013 데이터베이스에 전체 및 차등 백업을 차례로 복원합니다.The following example restores a full, and then a differential backup to the SalesInvoices2013 database

데이터베이스의 전체 백업은 ‘\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full’ 디렉터리에 저장되는 전체 백업에서 복원됩니다.The full backup of the database is restored from the full backup which is stored in the '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full' directory. 복원이 성공적으로 완료되면 차등 백업이 SalesInvoices2013 데이터베이스에 복원됩니다.If the restore completes successfully, the differential backup is restored to the SalesInvoices2013 database. 차등 백업은 ‘\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Diff’ 디렉터리에 저장됩니다.The differential backup is stored in the '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Diff' directory.

RESTORE DATABASE SalesInvoices2013  
    FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Diff'  
    WITH BASE = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full'  
[;]  

3.C. 백업 헤더 복원Restoring the backup header

이 예제는 데이터베이스 백업 ‘\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full’에 대한 헤더 정보를 복원합니다.This example restores the header information for database backup '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full' . 명령은 Invoices2013Full 백업에 대한 정보에서 하나의 행에 발생합니다.The command results in one row of information for the Invoices2013Full backup.

RESTORE HEADERONLY  
    FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full'  
[;]  

헤더 정보를 사용하여 백업 복원을 시도하기 전에 백업의 콘텐츠를 확인하거나 대상 복원 어플라이언스가 원본 백업 어플라이언스와 호환되는지 확인할 수 있습니다.You can use the header information to check the contents of a backup, or to make sure the target restoration appliance is compatible with the source backup appliance before attempting to restore the backup.

참고 항목See Also

BACKUP DATABASE(Parallel Data Warehouse)BACKUP DATABASE (Parallel Data Warehouse)