-- 테스트 데이터베이스를 생성합니다. 이때, 복구모드는 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
[실제 사용 쿼리]
1. D:\LAIGODB 폴더 생성
2. 쿼리 분석기에서 아래 쿼리를 단계적으로 수행합니다.
RESTORE DATABASE LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_db_200904050219.BAK' WITH NORECOVERY,
MOVE 'LAIGO_Data' TO 'D:\LAIGODB\LAIGO_DATA.MDF',
MOVE 'LAIGO_Log' TO 'D:\LAIGODB\LAIGO_LOG.LDF',
MOVE 'LAIGO_1_Data' TO 'D:\LAIGODB\LAIGO_DATA.NDF'
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_tlog_200904050816.TRN' WITH NORECOVERY
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_tlog_200904051617.TRN' WITH NORECOVERY
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_tlog_200904060015.TRN' WITH NORECOVERY
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_tlog_200904060817.TRN' WITH NORECOVERY
3. 복구 시간 명시
RESTORE LOG LAIGO FROM DISK = 'D:\LAIGODB\LAIGO_tlog_200904061619.TRN' WITH STOPAT = '2009-04-06 12:15:00', RECOVERY
4. 데이터베이스 복구가 완료되면 해당 테이블을 운영 서버로 옮기시면 됩니다
[참고자료]
SQL 데이터베이스 최종 백업 날짜 확인
작성자 : Lai Go / 작성일자 : 2008.06.12