2007~2011/SQL Server2008. 6. 12. 23:07
데이터베이스 특정 시점을 복원하는 방법을 정리하였습니다. 아래 간단한 예제를 참고하도록 합니다.

-- 테스트 데이터베이스를 생성합니다. 이때, 복구모드는 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 데이터베이스 최종 백업 날짜 확인

http://laigo.kr/280



작성자 : Lai Go / 작성일자 : 2008.06.12

Posted by Lai Go