Utilizzo dei backup del log delle transazioni

 Le informazioni contenute in questo argomento sono rilevanti solo per i database che utilizzano il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

In questo argomento vengono introdotti concetti relativi al backup e al ripristino, ovvero all'applicazione, di log delle transazioni. In base ai modelli di recupero con registrazione completa e con registrazione minima delle operazioni bulk, per poter recuperare i dati è necessario eseguire backup di routine dei log delle transazioni (backup del log). In SQL Server 2005 e versioni successive è possibile eseguire il backup del log mentre è in esecuzione un qualsiasi backup completo.

Prima di creare il primo backup del log, è necessario creare un backup completo, ad esempio un backup del database oppure il primo di un set di backup di file. Il ripristino di un database solo tramite backup di file può essere un'operazione complessa. Quando possibile, è pertanto consigliabile iniziare con un backup completo del database. Eseguire quindi regolarmente il backup del log delle transazioni. In questo modo, è possibile non solo limitare al minimo il rischio di perdita dei dati, ma anche attivare il troncamento del log delle transazioni. In genere, il troncamento del log delle transazioni viene eseguito dopo ogni backup del log convenzionale, ma può essere ritardato. Per ulteriori informazioni, vedere Fattori che possono ritardare il troncamento del log..

È consigliabile eseguire backup del log sufficientemente frequenti da soddisfare i requisiti aziendali e, in particolare, il requisito inerente la tolleranza per eventuali perdite di dati, che potrebbero ad esempio verificarsi in seguito al danneggiamento dell'unità dei log. La frequenza appropriata per l'esecuzione dei backup del log viene determinata in base al raggiungimento di un compromesso tra la tolleranza per il rischio di perdita dei dati e la quantità di backup del log che è possibile archiviare, gestire e potenzialmente ripristinare. Potrebbe essere sufficiente eseguire un backup del log ogni 15 - 30 minuti. Se nella propria azienda è necessario limitare al minimo il rischio di perdita dei dati, valutare se eseguire i backup del log con una maggiore frequenza. L'esecuzione di backup del log più frequenti offre il vantaggio aggiuntivo di un aumento della frequenza del troncamento del log, con una conseguente riduzione delle dimensioni dei file di log.

Per limitare il numero di backup dei log che è necessario ripristinare, è fondamentale eseguire regolarmente il backup dei dati. Ad esempio, è possibile pianificare un backup completo del database una volta la settima e backup differenziali del database una volta al giorno.

[!NOTA]

Per impostazione predefinita, per ogni operazione di backup eseguita in modo corretto viene aggiunta una voce al log degli errori di SQL Server e al registro eventi di sistema. Se il backup del log viene eseguito di frequente, questi messaggi possono aumentare rapidamente, provocando la creazione di log degli errori di dimensioni elevate e rendendo difficile l'individuazione di altri messaggi. In tali casi è possibile eliminare queste voci utilizzando il flag di traccia 3226 se nessuno degli script dipende da tali voci. Per ulteriori informazioni, vedere Flag di traccia (Transact-SQL).

Catena di log

Una sequenza continua di backup del log è denominata catena di log. Una catena di log ha inizio con un backup completo del database. In genere, una nuova catena di log viene creata solo quando si esegue il backup del database per la prima volta oppure dopo il passaggio dal modello di recupero con registrazione minima al modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Se si sceglie di non sovrascrivere i set di backup esistenti durante la creazione di un backup completo del database, la catena di log esistente rimane intatta. Con la catena di log intatta, è possibile ripristinare il database da qualsiasi backup completo del database nel set di supporti, seguito da tutti i backup del log successivi tramite il punto di recupero specifico. Il punto di recupero può essere la fine dell'ultimo backup del log o un punto di recupero specifico in uno dei backup del log.

Per ripristinare un database al punto in cui si è verificato l'errore, è necessario che la catena di log sia intatta. In altre parole, è necessario che una sequenza non interrotta di backup del log delle transazioni si estenda fino al punto di errore. Il punto in cui la sequenza del log deve iniziare dipende dal tipo di backup dei dati che si sta ripristinando, ovvero un backup del database, parziale o di file. Nel caso di un backup del database o parziale, la sequenza di backup del log si deve estendere dalla fine di un backup del database o parziale. Nel caso di un set di backup di file, la sequenza di backup del log si deve estendere dall'inizio di un intero set di backup di file.

Se si utilizzano solo backup di file, è necessario eseguire il backup del log dall'inizio del primo backup completo di file. È possibile avviare l'esecuzione dei backup del log immediatamente dopo il primo backup completo di file. L'inizio da questo punto è consigliato perché il primo backup del log può richiedere parecchio tempo. Mentre è in corso il backup del log, eseguire il backup degli altri file. Per ripristinare il database solo tramite backup di file, il set di backup completi di file deve essere integrato con uno o più backup del log che coprano l'intervallo di tempo tra il primo e l'ultimo backup di file.

[!NOTA]

Per individuare il backup corrispondente all'inizio della catena di log in un set di backup, eseguire una query sulla colonna begins_log_chain della tabella backupset oppure eseguire RESTORE HEADERONLY sul dispositivo di backup per visualizzare la colonna BeginsLogChain nel set di risultati.

È necessario eseguire backup regolari del log delle transazioni. Oltre a consentire il ripristino delle transazioni incluse nel backup, un backup del log tronca il log in modo da rimuovere dal file di log i record di cui è stato eseguito il backup. Se non si esegue il backup del log con frequenza sufficiente, i file di log potrebbero riempirsi. Per informazioni sulla gestione di un log delle transazioni pieno, vedere Risoluzione dei problemi relativi a un log delle transazioni pieno (Errore 9002).

Nota importanteImportante

Se un backup del log risulta mancante o danneggiato, avviare una nuova catena di log creando un backup completo o differenziale del database e quindi eseguendo il backup del log delle transazioni. È consigliabile mantenere i backup dei log delle transazioni precedenti al backup del log mancante, qualora fosse necessario ripristinare il database fino a un punto nel tempo all'interno di tali backup. Per informazioni sulla protezione dei backup, vedere Considerazioni sulla protezione per il backup e il ripristino.

Per informazioni su come creare i backup dei log, vedere Creazione di backup del log delle transazioni e Backup della parte finale del log.

Modalità di utilizzo dei backup dei log

Il ripristino di un backup del log determina il rollforward delle modifiche registrate nel log delle transazioni in modo da ricreare l'esatto stato del database esistente all'inizio dell'operazione di backup del log. Quando si ripristina un database, è necessario ripristinare i backup del log creati dopo il backup completo del database ripristinato oppure dall'inizio del primo backup di file ripristinato. In genere, dopo il ripristino del backup dei dati o del backup differenziale più recente, è necessario ripristinare una serie di backup del log fino al punto di recupero desiderato. Recuperare quindi il database. Verrà eseguito il rollback di tutte le transazioni incomplete nel momento in cui è iniziato il recupero e verrà attivata la modalità in linea per il database. Dopo il recupero del database, non è possibile ripristinare altri backup.

Nota importanteImportante

Per evitare perdite di dati prima di un ripristino non in linea oppure dopo un errore, è consigliabile eseguire il backup della parte finale del log per acquisire tutti i record del log di cui non è ancora stato eseguito il backup. Per ulteriori informazioni, vedere Backup della parte finale del log.

Applicazione dei backup del log delle transazioni.