데이터베이스 특정 시점을 복원하는 방법을 정리하였습니다.
간단한 예제를 참고하도록 합니다.
-- 테스트 데이터베이스를 생성합니다. 이때, 복구모드는 FULL(전체)로 되어 있어야 합니다.
CREATE DATABASE LAIGO
go
USE LAIGO
go
-- 테스트 테이블을 생성합니다.
CREATE TABLE TB_TEST
(
DATA char(1)
)
go
-- A,B,C 데이터를 삽입합니다.
INSERT INTO TB_TEST VALUES('A')
INSERT INTO TB_TEST VALUES('B')
INSERT INTO TB_TEST VALUES('C')
-- 데이터를 확인합니다.
SELECT * FROM TB_TEST
DATA
----
A
B
C
-- Full Backup 합니다.
BACKUP DATABASE LAIGO TO DISK = 'D:\LAIGO.bak' WITH INIT
-- D,E,F 데이터를 삽입합니다.
INSERT INTO TB_TEST VALUES('D')
INSERT INTO TB_TEST VALUES('E')
INSERT INTO TB_TEST VALUES('F')
-- 데이터를 확인합니다.
SELECT * FROM TB_TEST
DATA
----
A
B
C
D
E
F
-- 로그백업1
BACKUP LOG LAIGO TO DIsk = 'D:\LAIGO_LOG1.bak'
-- G,H,I 데이터를 삽입합니다.
INSERT INTO TB_TEST VALUES('G')
INSERT INTO TB_TEST VALUES('H')
INSERT INTO TB_TEST VALUES('I')
-- 데이터를 확인합니다.
SELECT * FROM TB_TEST
DATA
----
A
B
C
D
E
F
G
H
I
-- 현재시간을 확인합니다.
select getdate()
2008-06-11 11:30:56.293
-- 과감히 데이터를 삭제합니다.
DELETE FROM TB_TEST
(9개행적용됨)
-- 모두 삭제 되었음을 확인할 수 있습니다.
SELECT * FROM TB_TEST
DATA
----
-- 이제부터 복구 절차입니다. 현재 트랜잭션 로그를 백업합니다.
BACKUP LOG LAIGO TO DISK = 'D:\LAIGO_LOG2.bak' WITH NO_TRUNCATE
use master
go
-- Full Backup 데이터 복원합니다.
RESTORE DATABASE LAIGO FROM DISK = 'D:\LAIGO.bak' WITH NORECOVERY
-- 그 다음 로그 백업 데이터를 복원합니다.
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGO_LOG1.bak' WITH NORECOVERY
-- 역시 그 다음, 최종 로그 백업 데이터를 이용하여 데이터가 삭제되기 전 시점으로 복원합니다.
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGO_LOG2.bak'
WITH STOPAT = '2008-06-11 11:30:56.293' , RECOVERY
-- 확인절차
USE LAIGO
Go
-- 복구가 완료되었습니다.
SELECT * FROM TB_TEST
DATA
----
A
B
C
D
E
F
G
H
I
작성자 : Lai Go / 작성일자 : 2008.06.12
'데이터베이스 > SQL Server' 카테고리의 다른 글
사용자 데이터베이스 이동 (분리/연결) (0) | 2008.09.29 |
---|---|
SQL 인스턴스 Pause(일시중지)와 Stop(중지)의 차이점 (0) | 2008.09.29 |
SQL Server 2005 Cluster Agent Service 실행 실패 (0) | 2008.09.29 |
OPENROWSET 쿼리를 사용하여 원격 데이터 엑세스 실패 (0) | 2008.09.29 |
사용자 데이터베이스 이동 (ALTER DATABASE) (0) | 2008.09.28 |