Share via


Recupero fino a uno specifico punto nel tempo

Le informazioni contenute in questo argomento sono rilevanti solo per i database di SQL Server che utilizzano il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Nel modello di recupero con registrazione minima delle operazioni bulk se un backup del log contiene modifiche con registrazione minima delle operazioni bulk, il recupero temporizzato non è possibile rispetto a un punto all'interno di tale backup. È necessario recuperare il database fino alla fine del backup del log delle transazioni.

Per eseguire il ripristino rispetto a un momento temporale specifico

Sintassi Transact-SQL per il ripristino fino a un momento specifico

Un momento specifico viene sempre ripristinato da un backup del log. In ogni istruzione RESTORE LOG della sequenza di ripristino, è necessario specificare l'ora o la transazione di destinazione in una clausola STOPAT identica. Come prerequisito per un ripristino temporizzato, è necessario innazitutto ripristinare un backup completo del database il cui endpoint sia precedente rispetto al momento di ripristino di destinazione. Il backup completo del database può essere precedente rispetto al backup completo del database più recente purché vengano ripristinati tutti i backup del log successivi, fino al backup del log contenente la data e ora specifica di destinazione compreso.

Per consentire l'identificazione del backup del database da ripristinare, è possibile specificare la clausola WITH STOPAT nell'istruzione RESTORE DATABASE per generare un errore se un backup dei dati è troppo recente rispetto alla data e ora specifica di destinazione. Il backup completo dei dati viene sempre ripristinato, anche se contiene la data e ora specifica di destinazione.

La sintassi di base è la seguente:

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

Il punto di recupero è l'ultimo commit del log delle transazioni verificatosi in corrispondenza o prima del valore datetime specificato da time.

Per ripristinare solo le modifiche apportate prima di un punto nel tempo specifico, specificare WITH STOPAT = time per ogni backup da ripristinare. Questo garantisce che il momento nel tempo desiderato non venga superato.

In genere, una sequenza di ripristino temporizzato include i passaggi seguenti:

  • Ripristinare l'ultimo backup completo del database e, se presente, l'ultimo backup differenziale del database senza recuperare il database (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  • Applicare ogni backup del log delle transazioni nella stessa sequenza di creazione, specificando l'ora in cui si intende interrompere il ripristino del log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

Per ulteriori informazioni, vedere Ripristino di un database fino a un punto all'interno di un backup.