다음을 통해 공유


방법: 데이터베이스를 데이터베이스 스냅숏으로 되돌리기(Transact-SQL)

데이터베이스 스냅숏은 중복 저장소가 아니기 때문에 디스크 오류나 다른 유형의 손상에 대해 보호하지 않습니다. 그러나 온라인 데이터베이스에서 사용자 오류가 발생하면 데이터베이스를 오류 발생 이전의 데이터베이스 스냅숏으로 되돌릴 수 있습니다.

중요 정보중요

데이터베이스를 보호하려면 정기적으로 백업하고 복원 계획을 테스트해야 합니다. 데이터베이스 스냅숏을 만든 시점까지 원본 데이터베이스를 복원해야 하는 경우 이 작업을 수행할 수 있는 백업 정책을 구현합니다.

되돌리면 원래의 원본 데이터베이스를 되돌린 데이터베이스로 덮어씁니다. 스냅숏으로 되돌리면 전체 텍스트 카탈로그가 모두 삭제됩니다.

중요 정보중요

되돌리기 전에 데이터베이스 스냅숏으로 되돌리기의 정보를 숙지해야 합니다.

데이터베이스를 데이터베이스 스냅숏으로 되돌리려면

  1. 데이터베이스를 되돌릴 데이터베이스 스냅숏을 식별합니다. SQL Server Management Studio에서 데이터베이스의 스냅숏을 확인할 수 있습니다(방법: 데이터베이스 스냅숏 보기(SQL Server Management Studio) 참조). 또한 sys.databases(Transact-SQL) 카탈로그 뷰의 source_database_id 열에서 뷰의 원본 데이터베이스를 식별할 수 있습니다.

  2. 다른 모든 데이터베이스 스냅숏을 삭제합니다.

    스냅숏 삭제 방법은 방법: 데이터베이스 스냅숏 삭제(Transact-SQL)를 참조하십시오. 되돌리기 전에 데이터베이스에서 전체 복구 모델을 사용하는 경우 로그를 백업해야 합니다. 자세한 내용은 방법: 트랜잭션 로그 백업(SQL Server Management Studio) 또는 방법: 데이터베이스가 손상된 경우 트랜잭션 로그 백업(Transact-SQL)을 참조하십시오.

  3. 되돌리기 작업을 수행합니다.

    되돌리기 작업을 수행하려면 원본 데이터베이스에 대해 RESTORE DATABASE 권한이 필요합니다. 데이터베이스를 되돌리려면 다음과 같은 Transact-SQL 문을 사용합니다.

    RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT =<database_snapshot_name>

    여기서 <database_name>은 원본 데이터베이스이고 <database_snapshot_name>은 데이터베이스를 되돌리려는 스냅숏의 이름입니다. 이 문에서 백업 장치가 아닌 스냅숏 이름을 지정해야 합니다.

    자세한 내용은 RESTORE(Transact-SQL)를 참조하십시오.

    [!참고]

    되돌리기 작업 동안 스냅숏과 원본 데이터베이스를 모두 사용할 수 없습니다. 원본 데이터베이스와 스냅숏이 모두 "복원 중"으로 표시됩니다. 되돌리기 작업 중에 오류가 발생하면 데이터베이스가 다시 시작될 때 되돌리기를 완료하려고 시도합니다.

  4. 데이터베이스 스냅숏을 만든 후 데이터베이스 소유자가 변경된 경우 되돌린 데이터베이스의 데이터베이스 소유자를 업데이트할 수 있습니다.

    [!참고]

    되돌린 데이터베이스는 데이터베이스 스냅숏의 사용 권한과 구성(데이터베이스 소유자, 복구 모델 등)을 유지합니다.

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

  6. 필요에 따라, 특히 전체 또는 대량 로그 복구 모델을 사용하는 경우 되돌린 데이터베이스를 백업합니다. 데이터베이스를 백업하는 방법은 방법: 데이터베이스 백업(SQL Server Management Studio) 또는 방법: 전체 데이터베이스 백업 만들기(Transact-SQL)를 참조하십시오.

이 섹션에는 데이터베이스를 데이터베이스 스냅숏으로 되돌리는 예가 포함되어 있습니다.

1. AdventureWorks 데이터베이스에 대한 스냅숏 되돌리기

이 예에서는 현재 하나의 스냅숏만 AdventureWorks 데이터베이스에 있는 것으로 가정합니다. 여기서 데이터베이스가 되돌려지는 스냅숏을 만드는 예는 방법: 데이터베이스 스냅숏 만들기(Transact-SQL)를 참조하십시오.

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

2. Sales 데이터베이스에 대한 스냅숏 되돌리기

이 예에서는 Sales 데이터베이스에 현재 두 개의 스냅숏 sales_snapshot0600sales_snapshot1200이 있는 것으로 가정합니다. 스냅숏 중 오래된 항목을 삭제하고 데이터베이스를 가장 최근의 스냅숏으로 되돌립니다.

이 예에 사용되는 예제 데이터베이스와 스냅숏을 만드는 코드는 다음을 참조하십시오.

--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