Applicazione dei backup di log delle transazioni (SQL Server)Apply Transaction Log Backups (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.The topic is relevant only for the full recovery model or bulk-logged recovery model.

In questo argomento viene descritta l'applicazione dei backup del log delle transazioni durante il ripristino di un database di SQL ServerSQL Server .This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

Requisiti per ripristinare i backup dei log delle transazioni Requirements for restoring transaction log backups

Per applicare un backup del log delle transazioni devono essere soddisfatti i requisiti seguenti:To apply a transaction log backup, the following requirements must be met:

  • 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.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. 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.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • Ordine di ripristino corretto: è necessario ripristinare innanzitutto il backup completo o il backup differenziale del database immediatamente precedente.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. Tutti i log delle transazioni creati dopo tale backup completo o differenziale devono essere ripristinati in ordine cronologico.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. 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.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • Database non ancora recuperato: non è possibile recuperare il database finché non viene applicato il log delle transazioni finale.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. 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.If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    SUGGERIMENTOTIP! È consigliabile ripristinare tutti i backup del log (RESTORE LOG nome_database WITH NORECOVERY).A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). Dopo aver ripristinato l'ultimo backup del log, recuperare il database in un'operazione separata (RESTORE DATABASE nome_database WITH RECOVERY).Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

Recupero e log delle transazioni Recovery and transaction logs

Quando si recupera il database al termine dell'operazione di ripristino, viene eseguito il rollback di tutte le transazioni incomplete.When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. Questa procedura è nota come fase di rollback.This is known as the undo phase. L'esecuzione del rollback è necessaria per ripristinare l'integrità del database.Rolling back is required to restore the integrity of the database. Dopo il rollback il database passa nello stato online, dopodiché non è possibile applicare alcun altro backup del log delle transazioni al database.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

Si supponga, ad esempio, che una serie di backup del log delle transazioni includa una transazione con esecuzione prolungata.For example, a series of transaction log backups contain a long-running transaction. 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.The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. Il primo backup del log delle transazioni non include un record di un'operazione di commit o rollback.There is no record of a commit or rollback operation in the first transaction log backup. 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.If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server non è possibile applicare il secondo backup del log delle transazioni dopo questo punto. does not allow for the second transaction log backup to be applied after this point.

NOTA: in alcuni casi, durante il ripristino del log è possibile aggiungere un file in modo esplicito.NOTE: In some circumstances, you can explicitly add a file during log restore.

Usare i backup del log per eseguire il ripristino fino al momento dell'errore Use log backups to restore to the failure point

Si osservi a titolo di esempio la sequenza di eventi seguente:Assume the following sequence of events.

TimeTime EventoEvent
8.008:00 A.M. Backup del database per creare un backup completo del database.Back up database to create a full database backup.
12.00Noon Backup del log delle transazioniBack up transaction log.
16.004:00 P.M. Backup del log delle transazioniBack up transaction log.
18.006:00 P.M. Backup del database per creare un backup completo del database.Back up database to create a full database backup.
20.008:00 P.M. Backup del log delle transazioniBack up transaction log.
21.459:45 P.M. Si verifica un errore.Failure occurs.

NOTA: per la spiegazione di questa sequenza esemplificativa di backup, vedere Backup di log delle transazioni (SQL Server).NOTE: For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

Per ripristinare lo stato del database corrispondente alle ore 21.45To restore the database to its state at 9:45 P.M. (punto di errore), è possibile utilizzare una delle procedure alternative seguenti:(the point of failure), either of the following alternative procedures can be used:

Alternativa 1: ripristino del database dal backup completo più recenteAlternative 1: Restore the database by using the most recent full database backup

  1. Creare un backup della parte finale del log delle transazioni attivo a partire dal momento dell'errore.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Non ripristinareDo not restore the 8:00 A.M. del backup completo del database delle 18.00.full database backup. Ripristinare invece il backup completo del databaseInstead, restore the more recent 6:00 P.M. più recente effettuato alle 18.00, quindi applicare ilfull database backup, and then apply the 8:00 P.M. backup del log effettuato alle 20.00 e il backup della parte finale del log.log backup and the tail-log backup.

    Alternativa 2: ripristino del database da un backup completo precedenteAlternative 2: Restore the database by using an earlier full database backup

NOTA: questa procedura alternativa è utile nel caso non sia possibile usareNOTE: This alternative process is useful if a problem prevents you from using the 6:00 P.M. del backup completo del database delle 18.00.full database backup. Questa procedura richiede più tempo di quello necessario per il ripristinoThis process takes longer than restoring from the 6:00 P.M. del backup completo del database delle 18.00.full database backup.

  1. Creare un backup della parte finale del log delle transazioni attivo a partire dal momento dell'errore.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Ripristinare il backupRestore the 8:00 A.M. completo del database delle 8.00, quindi ripristinare in sequenza tutti e quattro i backup del log delle transazioni.full database backup, and then restore all four transaction log backups in sequence. Ciò determina il rollforward di tutte le transazioni completate fino alle 21.45.This rolls forward all completed transactions up to 9:45 P.M.

    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.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

NOTA: in alcuni casi è anche possibile usare i log delle transazioni per ripristinare un database fino a un punto nel tempo specifico.NOTE: In some cases, you can also use transaction logs to restore a database to a specific point in time. Per altre informazioni, vedere Ripristinare un database di SQL Server fino a un punto specifico (modello di recupero con registrazione completa).For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Per applicare un backup del log delle transazioniTo apply a transaction log backup

Vedere ancheSee also

Log delle transazioni (SQL Server)The Transaction Log (SQL Server)