Condividi tramite


Procedure consigliate per il recupero di un database fino a un punto di recupero specifico

Icona con disco di database blu Le informazioni contenute in questo argomento sono rilevanti solo per i database in cui viene utilizzato il modello di recupero con registrazione completa o con registrazione minima delle transazioni di massa.

In questo argomento vengono descritte alcune procedure consigliate per il ripristino di un database fino a un punto di recupero specifico.

Utilizzo dell'opzione STANDBY per la ricerca di un punto sconosciuto nel tempo

In alcuni casi, è necessario ripristinare un database fino a un punto di recupero specifico, ma non si conosce il punto nel tempo di destinazione o non si dispone di un numero di sequenza del file di log (LSN) o di una transazione contrassegnata, se presente. Una soluzione consiste nell'eseguire il rollforward incrementale del file di dati primario e, facoltativamente, di altri file di dati specificando WITH STANDBY **=**standby_file_name anziché WITH RECOVERY. Utilizzando l'opzione STANDBY è possibile recuperare il database per l'accesso in sola lettura. In questo modo, è possibile leggere il database e cercare l'informazione desiderata relativa al punto nel tempo. Questo file standby consente di eseguire il rollback del processo di recupero, nel caso in cui sia stato eseguito il rollforward oltre il punto nel tempo desiderato. Se il punto nel tempo non è ancora stato raggiunto, è possibile ripristinare backup del log successivi utilizzando l'opzione WITH STANDBY, specificando lo stesso file standby in ogni istruzione di ripristino.

Dopo aver identificato il punto di recupero desiderato, è possibile eseguire di nuovo il rollforward fino al punto in questione. Quando si raggiunge il punto di destinazione nel tempo, ripristinare il database parziale mediante l'opzione RECOVERY. È possibile ripristinare e recuperare eventuali file rimanenti in modo che siano consistenti con il database. Dopo aver ripristinato l'ultimo backup del log completo, ripristinare il primo backup del log eseguito dopo il punto di recupero di destinazione.

Per ulteriori informazioni sull'opzione STANDBY, vedere Argomenti dell'istruzione RESTORE (Transact-SQL).

Impostazione del punto nel tempo all'inizio di una sequenza di ripristino

Una sequenza di ripristino è costituita da una o più operazioni di ripristino che gestiscono lo spostamento dei dati attraverso una o più fasi del ripristino. Maggiore è la quantità di informazioni specificate sull'obiettivo della sequenza, inferiore sarà il rischio che si verifichino errori che potrebbero richiedere la reimpostazione dei dati. Per il ripristino temporizzato, in Motore di database di SQL Server vengono utilizzate le informazioni specificate all'inizio di una sequenza di ripristino e in una fase successiva della sequenza al fine di identificare il punto nel tempo che costituisce l'obiettivo del ripristino. Se durante la sequenza si attende troppo a lungo, si verificherà un errore. È necessario specificare le informazioni di interruzione nella fase iniziale della sequenza di ripristino per fare in modo che il processo non prosegua oltre il punto nel tempo che costituisce l'obiettivo.

Se si intende interrompere la sequenza in un punto di recupero specifico, è consigliabile indicarlo in ogni istruzione RESTORE LOG, utilizzando STOPAT, STOPBEFOREMARK o STOPATMARK, insieme all'opzione RECOVERY. Quando si utilizzano le opzioni RECOVERY e STOPAT in combinazione, se il backup del log delle transazioni non contiene i dati corrispondenti all'ora richiesta, ad esempio se l'ora specificata è successiva al periodo di tempo coperto dal log delle transazioni, viene generato un messaggio di avviso e il database non viene recuperato. Quando viene raggiunto il punto di recupero, il database viene recuperato e un tentativo di ripristinare un altro backup del log ha esito negativo. L'utilizzo delle opzioni RECOVERY e STOPAT in combinazione durante un ripristino di un backup del log consente di garantire che nessuna operazione di ripristino del log vada oltre l'ora di interruzione.

Esempio: Ripristino temporizzato

Nella sequenza di ripristino dell'esempio seguente, l'intenzione di interrompere il processo in un momento specifico viene dichiarata quando viene applicato il primo backup del log. In questo esempio l'ora di interruzione è inclusa nel primo backup del log dopo il backup differenziale.

RESTORE DATABASE database_name FROM full_backup 
    WITH NORECOVERY;
RESTORE DATABASE database_name FROM full_differential_backup 
    WITH NORECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;

L'esito positivo del ripristino di un log specifico dipende dal fatto che time sia compreso nell'intervallo acquisito da un backup del log, come descritto nella tabella seguente.

Relazione tra time e l'intervallo acquisito dal backup del log Effetto

time è precedente all'intervallo.

Il ripristino ha esito negativo e il rollforward non viene eseguito.

time è incluso nell'intervallo.

L'ultimo ripristino ha esito positivo e il database viene recuperato.

time è successivo all'intervallo.

Il rollforward ha esito positivo, ma il database non viene recuperato, in quanto non è stato ancora raggiunto il valore di time.

Dichiarazione del punto di interruzione in ogni istruzione RESTORE successiva

Un punto di interruzione è specifico dell'istruzione che include l'opzione STOPAT, STOPBEFOREMARK o STOPATMARK. Se tale opzione viene omessa in un'istruzione RESTORE, viene ripristinato il backup completo.

Man mano che una sequenza di ripristino temporizzato avanza, è possibile modificare il punto di recupero specificando un nuovo valore per time, a condizione che il database non abbia superato tale nuovo valore di time.

[!NOTA] Le opzioni STOPBEFOREMARK e STOPATMARK prevedono due parametri, mark_name e lsn_number. Il parametro mark_name, che identifica un contrassegno di transazione in un backup del log, è supportato solo nelle istruzioni RESTORE LOG. Il parametro lsn_number, che specifica un numero di sequenza del file di log, è supportato sia nelle istruzioni RESTORE DATABASE che nelle istruzioni RESTORE LOG.

Vedere anche

Concetti

Applicazione dei backup del log delle transazioni
Recupero fino a un numero di sequenza del file di log (LSN)
Recupero fino a una transazione contrassegnata

Altre risorse

RESTORE (Transact-SQL)
Ripristino di un database fino a un punto all'interno di un backup

Guida in linea e informazioni

Assistenza su SQL Server 2005