반응형
- /**********************************************************************************************
-- 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
반응형