SQL Server 특정시간으로 복원
실수로 DELETE문으로 자료를 삭제했을 경우 전체백업자료와 비상로그백업자료를 이용해 특정시간으로 복원하는 방법
-- 전체복구모델의 TestDB 의 TEST 테이블
-- 최초 자료 3건 입력
INSERT INTO TEST
VALUES(10, GETDATE()),
(20, GETDATE()),
(30, GETDATE())
GO
-- 데이터 확인
SELECT * FROM TEST
-- 전체백업
BACKUP DATABASE TestDB TO DISK='F:\DB_backup\temp\TestDB_full.bak' WITH INIT
GO
-- 2차 자료 입력
INSERT INTO TEST
VALUES(40, GETDATE()),
(50, GETDATE()),
(60, GETDATE())
GO
-- 데이터 확인
SELECT * FROM TEST
-- 시간확인
SELECT GETDATE() --'2015-02-13 07:39:00'
-- 앗! 실수로 모든 자료 삭제
DELETE FROM TEST
-- 데이터 확인
SELECT * FROM TEST
/* 복구 과정 */
-- 1. 비상로그 백업
BACKUP LOG TestDB TO DISK='F:\DB_backup\temp\TestDB_log.trn' WITH NO_TRUNCATE
GO
-- 2. master DB로 변경
USE master
GO
-- 3. NORECOVERY 옵션으로 전체 백업 복원 -- NORECOVERY 옵션은 전체 백업 복원후 이어서 다음 복원을 하겠다는 의미
-- 이때 TestDB 를 사용중이면 에러 발생하므로 사용중인 세션은 모두 종료되어야한다.
RESTORE DATABASE TestDB FROM DISK='F:\DB_backup\temp\TestDB_full.bak' WITH NORECOVERY
GO
-- 4. 비상로그 백업을 '2015-02-13 07:39:00' 시간으로 복원
-- STOPAT, RECOVERY 옵션으로 특정시간으로 복원을 끝낸다
RESTORE LOG TestDB FROM DISK='F:\DB_backup\temp\TestDB_log.trn'
WITH STOPAT='2015-02-13 07:39:00', RECOVERY
GO
-- 5. 복원 자료 확인
USE TestDB
GO
SELECT * FROM TEST
(참고)
http://tshooter.tistory.com/90
http://support.microsoft.com/kb/983139/ko
https://technet.microsoft.com/ko-kr/library/ms179314(v=sql.105).aspx