DBAtlas · Atlas d'exploitation des bases de données

Restaurer à un instant donné (point-in-time restore, STOPAT)

SQL ServerRestauration et récupération

Commande

-- 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 = '...';

Ce que fait la commande

Applique FULL + DIFF (facultative) + sauvegardes du journal WITH NORECOVERY et arrête le rejeu du journal à l'heure indiquée ; ramène la base juste avant l'opération fautive (DELETE/UPDATE erroné, DROP).

Quand l'utiliser

Pour récupérer des données supprimées/modifiées par erreur, examiner les données à un moment précis, ou pour un audit.

Attention

Restaurez sous un autre nom plutôt que par-dessus l'original, puis recopiez les lignes nécessaires ; si vous devez restaurer par-dessus, effectuez d'abord une sauvegarde de fin du journal. STOPAT est en heure locale du serveur. Le mode de récupération doit être FULL ; si la sauvegarde du journal contenant l'heure STOPAT inclut des opérations à journalisation minimale sous BULK_LOGGED, vous ne pouvez pas vous arrêter à l'intérieur de cette sauvegarde. Après RESTORE ... WITH RECOVERY, aucun autre journal ne peut être appliqué.

Ouvrir dans DBAtlas →

Voir aussi