Applicazione dei backup del log delle transazioni
Le informazioni contenute in questo argomento sono rilevanti solo per il modello di recupero con registrazione completa o il modello di recupero con registrazione minima delle operazioni bulk.
In questo argomento viene descritta l'applicazione dei backup del log delle transazioni durante il ripristino di un database di SQL Server. Per applicare un backup del log delle transazioni devono essere soddisfatti i requisiti seguenti:
È 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.
Il database non deve essere ancora stato 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.
Recupero e log delle transazioni
Quando si recupera il database al termine dell'operazione di ripristino, viene eseguito il rollback di tutte le transazioni incomplete. Questa procedura è nota come fase di rollback. L'esecuzione del rollback è necessaria 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. In SQL Server non è possibile applicare il secondo backup del log delle transazioni dopo questo punto.
Nota
In alcuni casi, durante il ripristino del log è possibile aggiungere un file in modo esplicito. Per ulteriori informazioni, vedere Controllo della creazione di file aggiunti durante l'esecuzione del rollforward.
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.
Utilizzo dei backup del log per eseguire il ripristino fino al momento dell'errore
Si osservi a titolo di esempio la sequenza di eventi seguente:
Ora |
Evento |
---|---|
8.00 |
Backup del database per creare un backup completo del database. |
12.00 |
Backup del log delle transazioni. |
16.00 |
Backup del log delle transazioni. |
18.00 |
Backup del database per creare un backup completo del database. |
20.00 |
Backup del log delle transazioni. |
21.45 |
Si verifica un errore. |
Nota
Per la spiegazione di questa sequenza esemplificativa di backup, vedere Creazione di backup del log delle transazioni.
Per ripristinare il database allo stato in cui si trovava alle 21.45, ovvero nell'istante in cui si è verificato l'errore, è possibile utilizzare una delle procedure alternative seguenti:
Alternativa 1: ripristino del database dal backup completo più recente
Creare un backup della parte finale del log delle transazioni attivo a partire dal momento dell'errore.
Non ripristinare il backup completo del database delle 8.00. Ripristinare invece il backup completo del database più recente effettuato alle 18.00 e quindi applicare il backup del log effettuato alle 20.00 e il backup della parte finale del log.
Alternativa 2: ripristino del database da un backup completo precedente
Nota
Questa procedura alternativa è utile nel caso non sia possibile utilizzare il backup completo del database effettuato alle 18.00 a causa di un problema. Questa procedura richiede più tempo di quello necessario per il ripristino del backup completo del database delle 18.00.
Creare un backup della parte finale del log delle transazioni attivo a partire dal momento dell'errore.
Ripristinare il backup completo del database delle 8.00 e quindi ripristinare in sequenza tutti e quattro i backup del 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.
Utilizzo dei backup del log per eseguire il ripristino fino a un punto nel tempo specifico
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 Ripristino di un database fino a un punto all'interno di un backup.
Applicazione dei backup del log delle transazioni
È consigliabile ripristinare tutti i backup del log utilizzando l'opzione WITH NORECOVERY:
RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY
Dopo aver ripristinato l'ultimo backup del log, recuperare il database in un'operazione separata:
RESTORE DATABASE database_name WITH RECOVERY
Per applicare un backup del log delle transazioni
Procedura: Applicazione del backup di un log delle transazioni (Transact-SQL)
Procedura: Ripristino di un backup del log delle transazioni (SQL Server Management Studio)
Per eseguire il ripristino fino al punto di recupero