DBAtlas · データベース運用アトラス

特定の時点にリストアする (ポイントインタイムリストア、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) の直前の状態に戻す。

使用する場面

誤って削除 / 更新したデータを復旧する場合、特定時点のデータを調べる場合、または監査のため。

注意

元のデータベースに上書きするのではなく別名でリストアし、必要な行をコピーして戻す。上書きリストアが必要な場合は、先にログ末尾のバックアップを取得する。STOPAT はサーバーのローカル時刻。復旧モデルは FULL である必要がある。STOPAT の時刻を含むログバックアップに BULK_LOGGED での最小ログ記録操作が含まれる場合、そのバックアップ内で停止することはできない。RESTORE ... WITH RECOVERY の後は、それ以上ログを適用できない。

DBAtlas で開く →

関連項目