Applicare backup di log delle transazioni (SQL Server)
Si applica a: SQL Server
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.
Requisiti per ripristinare i backup dei 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
). Dopo aver ripristinato l'ultimo backup del log, recuperare il database in un'operazione separata (RESTORE DATABASE *database_name* WITH RECOVERY
).
Recupero e log delle transazioni
Al termine dell'operazione di recupero del database, viene eseguito il processo di ripristino per garantire l'integrità del database. Per altre informazioni sul processo di recupero, vedere Panoramica del ripristino e del recupero (SQL Server).
Dopo il completamento del processo di recupero, il database passa online e non è più possibile applicare altri 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.
Nota
In alcuni casi, durante il ripristino del log è possibile aggiungere un file in modo esplicito.
Usare i backup del log per eseguire il ripristino fino al momento dell'errore
Si osservi a titolo di esempio la sequenza di eventi seguente:
Time | Event |
---|---|
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. |
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 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 delle 18:00, quindi applica il backup del registro delle 20:00 e il backup della parte finale del log
Alternativa 2: ripristino del database da un backup completo precedente
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 della parte finale del log delle transazioni attivo a partire dal momento dell'errore.
Ripristinare il blackup completo del database delle 8.00, 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.
In alcuni casi è anche possibile utilizzare i log delle transazioni per ripristinare un database fino a un punto nel tempo specifico. Per altre informazioni, vedere Ripristino di un database di SQL Server fino a un punto specifico all'interno di un backup (modello di recupero con registrazione completa).
Attività correlate
Per applicare un backup del log delle transazioni
Per eseguire il ripristino fino al punto di recupero
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
Vedi anche
Log delle transazioni (SQL Server)
Architettura e gestione del log delle transazioni di SQL Server