Ripristino di un database fino a un punto all'interno di un backup

 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.

Può essere necessario ripristinare e recuperare un database fino a un punto nel tempo, un contrassegno o un numero di sequenza del file di log (LSN) specifico prima del punto in cui si è verificato un errore. Si supponga, ad esempio, che una transazione abbia modificato alcuni dati in modo errato e di voler ripristinare il database in un punto precedente all'immissione dei dati non corretti. Qualsiasi ripristino che specifichi il punto di recupero per il database è detto ripristino temporizzato.

Nella seguente figura viene mostrato un ripristino a un punto di recupero all'interno di un log delle transazioni effettuato all'ora t9. Le modifiche apportate al resto del backup e il successivo backup del log effettuato all'ora t10 vengono ignorati.

Ripristino fino a un punto all'interno di un backup del log

Per specificare il punto di recupero previsto, è possibile utilizzare uno degli elementi seguenti:

  • Un punto nel tempo specifico all'interno di un log delle transazioni.

  • Un contrassegno denominato inserito in un record del log delle transazioni.

  • Un numero di sequenza del file di log (LSN).

Nota

Il recupero fino a un LSN è una funzionalità specializzata progettata per i fornitori di strumenti e viene utilizzata solo in rari casi.

Un'ora o una transazione specifica viene sempre ripristinata da un backup del log, pertanto è necessario che in un backup del log delle transazioni sia presente il punto di recupero di destinazione. Per ripristinare un database fino a uno specifico punto nel tempo o fino a una specifica transazione, indicare il punto di recupero di destinazione in una clausola STOPAT, STOPATMARK o STOPBEFOREMARK. In ogni istruzione RESTORE LOG della sequenza di ripristino, è necessario specificare l'ora o la transazione di destinazione in una clausola STOPAT, STOPATMARK o STOPBEFOREMARK identica. Quando si applica il backup del log contenente il punto di recupero, è possibile recuperare solo le transazioni eseguite prima di tale punto.

Come prerequisito per un ripristino temporizzato, è necessario innanzitutto ripristinare un backup completo del database il cui endpoint sia precedente rispetto al punto di recupero di destinazione. Per consentire l'identificazione del backup del database da ripristinare, è possibile specificare la clausola WITH STOPAT, STOPATMARK o STOPBEFOREMARK in un'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 però sempre ripristinato, anche se contiene la data e ora specifica di destinazione.

Nota

Il backup del log deve essere presente nello stesso percorso di recupero del backup completo o parziale del database ripristinato all'avvio della sequenza di ripristino temporizzato.

Al termine del recupero, la data e l'ora del database sono determinate dal punto di recupero utilizzato per il recupero del file primario. Eventuali ripristini successivi dovranno specificare punti di recupero consistenti con il database in quel momento.

Se una sequenza di ripristino parziale esclude qualsiasi filegroup FILESTREAM, il ripristino temporizzato non è supportato. È possibile forzare la continuazione della sequenza di ripristino. Tuttavia i filegroup FILESTREAM omessi dall'istruzione RESTORE non potranno mai più essere ripristinati. Per forzare un ripristino temporizzato, specificare l'opzione CONTINUE_AFTER_ERROR insieme all'opzione STOPAT, STOPATMARK o STOPBEFOREMARK che è necessario specificare anche nelle istruzioni RESTORE LOG successive. Se si specifica CONTINUE_AFTER_ERROR, la sequenza di ripristino parziale riesce e il filegroup FILESTREAM diviene irrecuperabile.

Nota

In base al 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 fino a un punto all'interno di tale backup ed è necessario recuperare il database fino alla fine di un backup del log delle transazioni.

Contenuto della sezione