Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'argomento è rilevante solo per il modello di recupero completo o il modello di recupero bulk-logged.
In questo argomento viene descritta l'applicazione dei backup del log delle transazioni durante il ripristino di un database di SQL Server.
Contenuto dell'argomento
Requisiti per il ripristino dei backup del log delle transazioni
Utilizzo dei backup del log per il ripristino al punto di guasto
Requisiti per il ripristino dei backup del log delle transazioni
Per applicare un backup del log delle transazioni devono essere soddisfatti i requisiti seguenti:
Numero sufficiente di backup del log per una sequenza di ripristino: per completare una sequenza di ripristino, è necessario che sia disponibile il backup di un numero sufficiente di record del log. I backup del log necessari, incluso il backup della parte finale del log se richiesto, devono essere disponibili prima dell'inizio della sequenza di ripristino.
Ordine di ripristino corretto: è necessario ripristinare innanzitutto il backup completo o il backup differenziale del database immediatamente precedente. Tutti i log delle transazioni creati dopo tale backup completo o differenziale devono essere ripristinati in ordine cronologico. Se uno dei backup del log delle transazioni appartenente a questa catena di log non è presente o risulta danneggiato, è possibile ripristinare soltanto i log delle transazioni antecedenti al log delle transazioni non più disponibile.
Database non ancora recuperato: non è possibile recuperare il database finché non viene applicato il log delle transazioni finale. Se si esegue il recupero del database dopo aver ripristinato uno dei backup del log delle transazioni intermedi, ovvero antecedenti all'estremità della catena di log, non sarà possibile eseguire il ripristino del database successivamente a tale punto senza riavviare l'intera sequenza di ripristino a partire dal backup completo del database.
Suggerimento
È consigliabile ripristinare tutti i backup del log (RESTORE LOG database_name WITH NORECOVERY). Quindi, dopo aver ripristinato l'ultimo backup del log, ripristinare il database in un'operazione separata (RESTORE DATABASE database_name WITH RECOVERY).
Log di ripristino e transazioni
Al termine dell'operazione di ripristino del database e del suo recupero, viene effettuato il rollback di tutte le transazioni incomplete. Questa operazione è nota come fase di annullamento. Il rollback è necessario per ripristinare l'integrità del database. Dopo il rollback il database passa nello stato online, dopodiché non è possibile applicare alcun altro backup del log delle transazioni al database.
Si supponga, ad esempio, che una serie di backup del log delle transazioni includa una transazione con esecuzione prolungata. L'inizio della transazione viene registrato nel primo backup del log delle transazioni, mentre la fine della transazione viene registrata nel secondo backup del log delle transazioni. Il primo backup del log delle transazioni non include un record di un'operazione di commit o rollback. Se viene eseguita un'operazione di recupero quando è applicato il primo backup del log delle transazioni, la transazione con esecuzione prolungata verrà considerata incompleta e verrà eseguito il rollback delle modifiche dei dati registrate nel primo backup del log delle transazioni. SQL Server non consente di applicare il secondo backup del log delle transazioni dopo questo punto.
Annotazioni
In alcuni casi, durante il ripristino del log è possibile aggiungere un file in modo esplicito.
Uso dei backup del log per il ripristino al punto di errore
Si osservi a titolo di esempio la sequenza di eventi seguente:
| Tempo | Evento |
|---|---|
| 8:00 del mattino | Effettua il backup del database per creare una copia di backup completa del database. |
| Mezzogiorno | Backup del log delle transazioni |
| 16.00 | Backup del log delle transazioni |
| 18:00 | Effettua il backup del database per creare una copia di backup completa del database. |
| 20:00 | Backup del log delle transazioni |
| 21.45 | Si verifica un errore. |
Annotazioni
Per la spiegazione di questa sequenza esemplificativa di backup, vedere Backup di log delle transazioni (SQL Server).
Per ripristinare lo stato del database alle 21:45 (punto di errore), è possibile utilizzare una delle procedure alternative seguenti:
Alternativa 1: ripristino del database dal backup completo più recente
Creare un backup del tail-log del log delle transazioni attivo al momento dell'errore.
Non ripristinare il backup completo del database delle 8:00 del mattino. Ripristinare invece il backup completo del database più recente delle 18:00, e poi applica il backup del registro delle 20:00 e il backup finale del log.
Alternativa 2: ripristino del database da un backup completo precedente
Annotazioni
Questa procedura alternativa è utile nel caso non sia possibile utilizzareil backup completo del database delle 18:00. Questa procedura richiede più tempo rispetto al ripristino dal backup completo del database delle 18.00.
Creare un backup del tail-log del log delle transazioni attivo al momento dell'errore.
Ripristinare il backup completo del database delle 8.00, quindi ripristinare in sequenza tutti e quattro i backup dei log delle transazioni. Ciò determina il rollforward di tutte le transazioni completate fino alle 21.45.
Questa procedura alternativa mostra quale sia il livello di sicurezza supplementare garantito dal mantenimento di una catena di backup del log delle transazioni eseguiti in una serie di backup completi del database.
Annotazioni
In alcuni casi è anche possibile utilizzare i log delle transazioni per ripristinare un database fino a un punto nel tempo specifico. Per ulteriori informazioni, vedere Ripristinare un database SQL Server fino a un punto specifico nel tempo (Recupero completo).
Attività correlate
Per applicare un backup del log delle transazioni
Per eseguire il ripristino fino al punto di recupero
Ripristinare un database al punto di guasto nel modello di recupero completo (Transact-SQL)
Ripristinare un database di SQL Server a un punto specifico nel tempo (modello di recupero completo)
SqlRestore (SMO)
Recupero di database correlati che contengono transazioni contrassegnate
Eseguire il recupero fino a un numero di sequenza del file di log (SQL Server)
Per recuperare un database dopo il ripristino dei backup utilizzando WITH NORECOVERY