DBAtlas · Atlas de operaciones de bases de datos

Restaurar a un punto en el tiempo (point-in-time restore, STOPAT)

SQL ServerRestauración y recuperación

Comando

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

Qué hace

Aplica FULL + DIFF (opcional) + backups de log WITH NORECOVERY y detiene la reproducción del log en la hora indicada; devuelve la base de datos a justo antes de la operación errónea (DELETE/UPDATE equivocado, DROP).

Cuándo usarlo

Para recuperar datos borrados/actualizados por accidente, para inspeccionar los datos en un momento concreto o para una auditoría.

Precaución

Restaure con un nombre alternativo en lugar de sobre la original y luego copie de vuelta las filas necesarias; si debe restaurar encima, tome primero un backup tail-log. STOPAT está en hora local del servidor. El modelo de recuperación debe ser FULL; si el backup de log que contiene la hora de STOPAT incluye operaciones con registro mínimo bajo BULK_LOGGED, no puede detenerse dentro de ese backup. Tras RESTORE ... WITH RECOVERY no se pueden aplicar más logs.

Abrir en DBAtlas →

Relacionado