DBAtlas · 데이터베이스 운영 아틀라스

특정 시점으로 복원 (point-in-time restore, STOPAT)

SQL Server복원 및 복구

명령어

-- Restore under a side name, keep the original intact:
RESTORE DATABASE [Musteri_PITR]
FROM DISK = N'D:\Backup\Musteri_full_20261008.bak'
WITH MOVE N'Musteri'     TO N'D:\Data\Musteri_PITR.mdf',
     MOVE N'Musteri_log' TO N'D:\Log\Musteri_PITR_log.ldf',
     NORECOVERY, STATS = 10;

RESTORE DATABASE [Musteri_PITR]
FROM DISK = N'D:\Backup\Musteri_diff_20261008.bak' WITH NORECOVERY;

-- All log backups in order, each with the same STOPAT:
RESTORE LOG [Musteri_PITR] FROM DISK = N'D:\Backup\Musteri_log_1200.trn'
WITH NORECOVERY, STOPAT = '2026-10-08T14:29:00';
RESTORE LOG [Musteri_PITR] FROM DISK = N'D:\Backup\Musteri_log_1500.trn'
WITH NORECOVERY, STOPAT = '2026-10-08T14:29:00';

RESTORE DATABASE [Musteri_PITR] WITH RECOVERY;

-- Alternative: step forward with STANDBY and read data at each point:
-- RESTORE LOG [Musteri_PITR] FROM DISK = N'...' WITH STANDBY = N'D:\Backup\Musteri_PITR_undo.dat', STOPAT = '...';

하는 일

FULL + (선택) DIFF + 로그 백업을 WITH NORECOVERY로 적용하고 지정한 시각에서 로그 재생을 멈춘다. 잘못된 작업(잘못된 DELETE/UPDATE, DROP) 직전 상태로 데이터베이스를 되돌린다.

사용 시점

실수로 삭제/수정된 데이터를 복구하거나, 특정 시점의 데이터를 검사하거나, 감사를 위해.

주의

원본 위에 덮어쓰지 말고 다른 이름으로 복원한 뒤 필요한 행을 다시 복사한다. 덮어써야 한다면 먼저 tail-log 백업을 수행한다. STOPAT은 서버 로컬 시간이다. 복구 모델은 FULL이어야 한다. STOPAT 시각을 포함한 로그 백업에 BULK_LOGGED의 최소 로깅 작업이 있으면 해당 백업 내부에서 멈출 수 없다. RESTORE ... WITH RECOVERY 이후에는 로그를 더 적용할 수 없다.

DBAtlas에서 열기 →

관련 항목