반응형
  1. /**********************************************************************************************
    -- Title : [2k] 특정 시점으로의 복원
    -- Reference : sqlworld.pe.kr
    -- Key word : 복원 restore stopat
    **********************************************************************************************/
    --*
    --* 파일명: 특정 지점으로 복원.sql
    --* 작성자: 이장래
    --* 작성일: 2007.02.01
    --*

    --*
    --* A. 테이터베이스 관리
    --*

    -- 1) 데이터베이스 만들기
    CREATE DATABASE SQLWorld
    GO
    USE  SQLWorld
    GO

    -- 2) 전체 백업
    BACKUP DATABASE SQLWorld
     TO DISK = 'C:\Backup\SQLWorld.bak'
     WITH FORMAT
    GO

    -- 3) 테이블 생성 및 한 행 입력
    CREATE TABLE T1 (
     col1 int,
     col2 int
    )
    GO
    INSERT INTO T1 VALUES(1, 10)
    INSERT INTO T1 VALUES(2, 20)
    INSERT INTO T1 VALUES(3, 30)
    INSERT INTO T1 VALUES(4, 40)
    INSERT INTO T1 VALUES(5, 50)
    GO

    -- 4) 로그 백업
    BACKUP LOG SQLWorld
     TO DISK = 'C:\Backup\SQLWorld.bak'
     WITH NOINIT
    GO

    -- 5) 데이터 추가 입력
    INSERT INTO T1 VALUES(6, 60)
    INSERT INTO T1 VALUES(7, 70)
    INSERT INTO T1 VALUES(8, 80)
    INSERT INTO T1 VALUES(9, 90)
    INSERT INTO T1 VALUES(10, 100)
    GO

    -- 6) 사고 발생
    DELETE T1
    GO
    SELECT GETDATE()
    GO

    --*
    --* B. 데이터베이스 복원
    --*
     
    USE Master
    GO

    -- 1) 로그 꼬리 백업(NO_TRUNCATE 옵션)
    BACKUP LOG SQLWorld
     TO DISK = 'C:\Backup\SQLWorld.bak'
     WITH NOINIT, NO_TRUNCATE
    GO

    -- 2) 백업 내용 확인
    RESTORE HEADERONLY
     FROM DISK = 'C:\Backup\SQLWorld.bak'
    GO

    -- 3) 전체 백업 복원
    RESTORE DATABASE SQLWorld
     FROM DISK = 'C:\Backup\SQLWorld.bak'
     WITH FILE = 1, NORECOVERY
    GO

    -- 4) 로그 백업 복원
    RESTORE LOG SQLWorld
     FROM DISK = 'C:\Backup\SQLWorld.bak'
     WITH FILE = 2, NORECOVERY -- NORECOVERY (복원할 로그 꼬리가 있으니)
    GO

    -- 6) 마지막 로그 백업 복원(STOPAT 옵션)
    RESTORE LOG SQLWorld
     FROM DISK = 'C:\Backup\SQLWorld.bak'
     WITH FILE = 3,
         RECOVERY,
         STOPAT = '2007-02-02 19:13:30.000'
    GO

    -- 7) 결과 확인
    USE SQLWorld
    GO
    SELECT * FROM T1
    GO
반응형

+ Recent posts