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

온라인 데이터베이스의 데이터가 손상되면 일부 경우 데이터베이스를 손상 발생 이전의 데이터베이스 스냅숏으로 되돌리는 작업이 백업에서 온라인 데이터베이스를 복원하는 방법에 대한 대체 방법이 될 수 있습니다.If data in an online database becomes damaged, in some cases, reverting the database to a database snapshot that predates the damage might be an appropriate alternative to restoring the database from a backup. 예를 들어 데이터베이스 되돌리기 작업은 테이블 삭제와 같은 최근의 심각한 사용자 오류 발생 전의 상황으로 돌아가는 데 유용할 수 있습니다.For example, reverting a database might be useful for reverse a recent serious user error, such as a dropped table. 그러나 스냅숏을 만든 후의 모든 변경 내용은 손실됩니다.However, all changes made after the snapshot was created are lost.

시작하기 전에 Before You Begin

제한 사항 Limitations and Restrictions

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

  • 데이터베이스는 현재 되돌릴 계획인 데이터베이스 스냅숏을 하나만 가지고 있어야 합니다.The database must currently have only one database snapshot, to which you plan to revert.

  • 데이터베이스에 읽기 전용 또는 압축 파일 그룹이 있습니다.Any read-only or compressed filegroups exist in the database.

  • 스냅숏이 만들어질 때 온라인 상태였던 파일이 이제 오프라인 상태입니다.Any files are now offline but were online when the snapshot was created.

    데이터베이스를 되돌리기 전에 다음 제한 사항을 고려합니다.Before reverting a database, consider the following limitations:

  • 되돌리기는 미디어 복구용으로 사용할 수 없습니다.Reverting is not intended for media recovery. .. 데이터베이스 스냅숏은 데이터베이스 파일의 불완전한 복사본이므로 데이터베이스나 데이터베이스 스냅숏이 손상된 경우 스냅숏에서 되돌릴 수 없는 경우가 많습니다.A database snapshot is an incomplete copy of the database files, so if either the database or the database snapshot is corrupted, reverting from a snapshot is likely to be impossible. 가능하다고 해도 손상된 경우에는 되돌리기를 수행해도 문제가 해결되지 않습니다.Furthermore, even when it is possible, reverting in the event of corruption is unlikely to correct the problem. 따라서 데이터베이스를 보호하려면 정기적으로 백업하고 복원 계획을 테스트해야 합니다.Therefore, taking regular backups and testing your restore plan are essential to protect a database. 자세한 내용은 Back Up and Restore of SQL Server Databases을 참조하세요.For more information, see Back Up and Restore of SQL Server Databases.

    참고

    데이터베이스 스냅숏을 만든 시점까지 원본 데이터베이스를 복원해야 하는 경우 전체 복구 모델을 사용하고 이 작업을 수행할 수 있는 백업 정책을 구현합니다.If you need to be able to restore the source database to the point in time at which you created a database snapshot, use the full recovery model and implement a backup policy that enables you to do that.

  • 원래의 원본 데이터베이스를 되돌린 데이터베이스로 덮어쓰기 때문에 스냅숏을 만든 후 데이터베이스에 대해 수행된 모든 업데이트는 손실됩니다.The original source database is overwritten by the reverted database, so any updates to the database since the snapshot's creation are lost.

  • 또한 되돌리기 작업으로 오래된 로그 파일이 덮어 쓰이고 로그가 다시 생성됩니다.The revert operation also overwrites the old log file and rebuilds the log. 따라서 되돌린 데이터베이스를 사용자 오류 발생 지점으로 롤포워드할 수 없습니다.Consequently, you cannot roll the reverted database forward to the point of user error. 그러므로 데이터베이스를 되돌리기 전에 로그를 백업하는 것이 좋습니다.Therefore, we recommend that you back up the log before reverting a database.

    참고

    원본 로그를 복원하여 데이터베이스를 롤포워드할 수 없어도 원본 로그 파일의 내용은 손실된 데이터를 다시 구성할 때 유용할 수 있습니다.Although you cannot restore the original log to roll forward the database, the information in the original log file can be useful for reconstructing lost data.

  • 되돌리기로 인해 로그 백업 체인이 끊어집니다.Reverting breaks the log backup chain. 따라서 되돌려진 데이터베이스의 로그를 백업하기 전에 먼저 전체 데이터베이스 또는 파일을 백업해야 합니다.Therefore, before you can take log backups of the reverted database, you must first take a full database backup or file backup. 전체 데이터베이스를 백업하는 것이 좋습니다.We recommend a full database backup.

  • 되돌리기 작업 동안 스냅숏과 원본 데이터베이스를 사용할 수 없습니다.During a revert operation, both the snapshot and the source database are unavailable. 원본 데이터베이스와 스냅숏은 모두 "복원 중"으로 표시됩니다.The source database and snapshot are both marked "In restore." 되돌리기 작업 중 오류가 발생하면 데이터베이스가 다시 시작될 때 되돌리기를 완료하려고 합니다.If an error occurs during the revert operation, when the database starts up again, the revert operation will try to finish reverting.

  • 되돌려진 데이터베이스의 메타데이터는 스냅숏 시점의 메타데이터와 동일합니다.The metadata of a reverted database is the same as the metadata at the time of the snapshot.

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

필수 구성 요소 Prerequisites

원본 데이터베이스 및 데이터베이스 스냅숏은 다음 사전 요구 사항을 충족해야 합니다.Ensure that the source database and database snapshot meet the following prerequisites:

보안 Security

사용 권한 Permissions

원본 데이터베이스에 대한 RESTORE DATABASE 권한을 가진 사용자는 해당 데이터베이스를 데이터베이스 스냅숏을 만들었을 때의 상태로 되돌릴 수 있습니다.Any user who has RESTORE DATABASE permissions on the source database can revert it to its state when a database snapshot was created.

데이터베이스를 데이터베이스 스냅숏으로 되돌리는 방법(Transact-SQL 사용) How to Revert a Database to a Database Snapshot (Using Transact-SQL)

데이터베이스를 데이터베이스 스냅숏으로 되돌리려면To revert a database to a database snapshot

참고

이 프로시저의 예는 이 섹션의 뒷부분에 나오는 예제(Transact-SQL)을 참조하세요.For an example of this procedure, see Examples (Transact-SQL), later in this section.

  1. 데이터베이스를 되돌릴 데이터베이스 스냅숏을 식별합니다.Identify the database snapshot to which you want to revert the database. SQL Server Management StudioSQL Server Management Studio에서 데이터베이스의 스냅숏을 확인할 수 있습니다([데이터베이스 스냅숏 보기(SQL Server)](../../relational-databases/databases/view-a-database-snapshot-sql-server.md) 참조).You can view the snapshots on a database in SQL Server Management StudioSQL Server Management Studio (see View a Database Snapshot (SQL Server)). 또한 sys.databases(Transact-SQL) 카탈로그 뷰의 sys.databases (Transact-SQL) 열에서 뷰의 원본 데이터베이스를 식별할 수 있습니다.Also, you can identify the source database of a view from the source_database_id column of the sys.databases (Transact-SQL) catalog view.

  2. 다른 모든 데이터베이스 스냅숏을 삭제합니다.Drop any other database snapshots.

    스냅숏 삭제 방법은 데이터베이스 스냅숏 삭제(Transact-SQL).For information on dropping snapshots, see Drop a Database Snapshot (Transact-SQL). 되돌리기 전에 데이터베이스에서 전체 복구 모델을 사용하는 경우 로그를 백업해야 합니다.If the database uses the full recovery model, before reverting, you should back up the log. 자세한 내용은 트랜잭션 로그 백업(SQL Server) 또는 데이터베이스가 손상된 경우 트랜잭션 로그 백업(SQL Server)을 참조하세요.For more information, see Back Up a Transaction Log (SQL Server) or Back Up the Transaction Log When the Database Is Damaged (SQL Server).

  3. 되돌리기 작업을 수행합니다.Perform the revert operation.

    되돌리기 작업을 수행하려면 원본 데이터베이스에 대해 RESTORE DATABASE 권한이 필요합니다.A revert operation requires RESTORE DATABASE permissions on the source database. 데이터베이스를 되돌리려면 다음과 같은 Transact-SQL 문을 사용합니다.To revert the database, use the following Transact-SQL statement:

    RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT =database_snapshot_nameRESTORE DATABASE database_name FROM DATABASE_SNAPSHOT =database_snapshot_name

    여기서 database_name 은 원본 데이터베이스이고 database_snapshot_name 은 데이터베이스를 되돌리려는 스냅숏의 이름입니다.Where database_name is the source database and database_snapshot_name is the name of the snapshot to which you want to revert the database. 이 문에서 백업 장치가 아닌 스냅숏 이름을 지정해야 합니다.Notice that in this statement, you must specify a snapshot name rather than a backup device.

    자세한 내용은 RESTORE(Transact-SQL).For more information, see RESTORE (Transact-SQL).

    참고

    되돌리기 작업 동안 스냅숏과 원본 데이터베이스를 모두 사용할 수 없습니다.During the revert operation, both the snapshot and the source database are unavailable. 원본 데이터베이스와 스냅숏이 모두 "복원 중"으로 표시됩니다.The source database and snapshot are both marked as "In restore." 되돌리기 작업 중에 오류가 발생하면 데이터베이스가 다시 시작될 때 되돌리기를 완료하려고 시도합니다.If an error occurs during the revert operation, it will try to finish reverting when the database starts up again.

  4. 데이터베이스 스냅숏을 만든 후 데이터베이스 소유자가 변경된 경우 되돌린 데이터베이스의 데이터베이스 소유자를 업데이트할 수 있습니다.If the database owner changed since creation of the database snapshot, you may want to update the database owner of the reverted database.

    참고

    되돌린 데이터베이스는 데이터베이스 스냅숏의 사용 권한과 구성(데이터베이스 소유자, 복구 모델 등)을 유지합니다.The reverted database retains the permissions and configuration (such as database owner and recovery model) of the database snapshot.

  5. 데이터베이스를 시작합니다.Start the database.

  6. 필요에 따라, 특히 전체 또는 대량 로그 복구 모델을 사용하는 경우 되돌린 데이터베이스를 백업합니다.Optionally, back up the reverted database, especially if it uses the full (or bulk-logged) recovery model. 데이터베이스를 백업하려면 전체 데이터베이스 백업 만들기(SQL Server)를 참조하세요.To back up a database, see Create a Full Database Backup (SQL Server).

예(Transact-SQL) Examples (Transact-SQL)

이 섹션에는 데이터베이스를 데이터베이스 스냅숏으로 되돌리는 다음 예가 포함되어 있습니다.This section contains the following examples of reverting a database to a database snapshot:

1. A. AdventureWorks 데이터베이스에 대한 스냅숏 되돌리기Reverting a snapshot on the AdventureWorks database

이 예에서는 현재 하나의 스냅숏만 AdventureWorks2012AdventureWorks2012 데이터베이스에 있는 것으로 가정합니다.This example assumes that only one snapshot currently exists on the AdventureWorks2012AdventureWorks2012 database. 여기서 데이터베이스가 되돌려지는 스냅숏을 만드는 예는 데이터베이스 스냅숏 만들기(Transact-SQL).For the example that creates the snapshot to which the database is reverted here, see Create a Database Snapshot (Transact-SQL).

USE master;  
-- Reverting AdventureWorks to AdventureWorks_dbss1800  
RESTORE DATABASE AdventureWorks from   
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';  
GO  

2. B. Sales 데이터베이스에 대한 스냅숏 되돌리기Reverting a snapshot on the Sales database

이 예에서는 Sales 데이터베이스에 현재 두 개의 스냅숏인 sales_snapshot0600sales_snapshot1200이 있다고 가정합니다.This example assumes that two snapshots currently exist on the Sales database: sales_snapshot0600 and sales_snapshot1200. 스냅숏 중 오래된 항목을 삭제하고 데이터베이스를 가장 최근의 스냅숏으로 되돌립니다.The example deletes the older of the snapshots and reverts the database to the more recent snapshot.

이 예에 사용되는 예제 데이터베이스와 스냅숏을 만드는 코드는 다음을 참조하세요.For the code for creating the sample database and snapshots on which this example depends, see:

--Test to see if sales_snapshot0600 exists and if it   
-- does, delete it.  
IF EXISTS (SELECT dbid FROM sys.databases  
    WHERE NAME='sales_snapshot0600')  
    DROP DATABASE SalesSnapshot0600;  
GO  
-- Reverting Sales to sales_snapshot1200  
USE master;  
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';  
GO  

참고 항목See Also

데이터베이스 스냅숏(SQL Server) Database Snapshots (SQL Server)
RESTORE(Transact-SQL) RESTORE (Transact-SQL)
sys.databases(Transact-SQL) sys.databases (Transact-SQL)
데이터베이스 미러링 및 데이터베이스 스냅숏(SQL Server) Database Mirroring and Database Snapshots (SQL Server)