Backup della parte finale del log (SQL Server)

Si applica a:SQL Server

Le informazioni contenute in questo articolo sono rilevanti solo per il backup e il ripristino di database di SQL Server che usano il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Un backup della parte finale del log acquisisce qualsiasi record di log di cui non è stato eseguito il backup (la parte finale del log), per prevenire perdita di dati e mantenere intatta la catena di log. Prima che sia possibile recuperare un database SQL Server nel punto temporale più recente, è necessario eseguire il backup della parte finale del log delle transazioni. Il backup della parte finale del log è l'ultimo backup di interesse nel piano di recupero per il database.

Non in tutti gli scenari di ripristino è necessario un backup della parte finale del log. Se il punto di recupero è contenuto in un backup del log precedente, non è necessario un backup della parte finale del log. Non è necessario eseguire il backup della parte finale del log se il punto di recupero è incluso in un backup del log precedente o se si sta spostando o sostituendo (sovrascrivendo) il database e non è necessario ripristinarlo fino a un punto nel tempo dopo l'ultimo backup.

Scenari in cui è necessario un backup della parte finale del log

È consigliabile eseguire un backup della parte finale del log negli scenari seguenti:

  • Se il database è online e si intende eseguire un'operazione di ripristino sul database, iniziare eseguendo il backup della parte finale del log. Per evitare un errore in un database online, è necessario usare l'opzione WITH NORECOVERY dell'istruzione Transact-SQL BACKUP.

  • Se il database è offline e non si avvia e risulta necessario eseguire un'operazione di ripristino, iniziare eseguendo il backup della parte finale del log. Dato che in questo momento non può avvenire alcuna transazione, usare l’opzione WITH NO_TRUNCATE. NO_TRUNCATE è effettivamente uguale a un backup del log delle transazioni di sola copia. Dato che in questo momento non può avvenire alcuna transazione, l'utilizzo di WITH NORECOVERY è facoltativo.

  • Se un database è danneggiato, tentare di acquisire un backup della parte finale del log tramite l'opzione WITH CONTINUE_AFTER_ERROR dell'istruzione BACKUP.

    Se il database è danneggiato, un backup della parte finale del log riuscirà solo se i file di log non sono danneggiati, il database è in uno stato che supporta il backup della parte finale del log e non include modifiche con registrazione minima delle operazioni bulk. Se non è possibile creare un backup della parte finale del log, qualsiasi transazione eseguita dopo l'ultimo backup del log andrà persa.

La tabella seguente riassume le opzioni NORECOVERY, NO_TRUNCATE e CONTINUE_AFTER_ERROR per BACKUP.

Opzione BACKUP LOG Commenti
NORECOVERY Utilizzare NORECOVERY ogni volta che si intende procedere con un'operazione di ripristino sul database. NORECOVERY porta il database nello stato di ripristino. Questo passaggio assicura che il database non si modifichi dopo il backup della parte finale del log. Il log viene troncato a meno che non venga specificata anche l'opzione NO_TRUNCATE o COPY_ONLY.

Importante: non usare NO_TRUNCATE, a meno che il database non sia danneggiato o offline. Potrebbe essere necessario attivare la modalità utente singolo per il database per ottenere l'accesso esclusivo prima di eseguire il ripristino con NORECOVERY. Dopo il ripristino, impostare di nuovo il database sulla modalità multiutente.
CONTINUE_AFTER_ERROR Utilizzare CONTINUE_AFTER_ERROR solo se si sta eseguendo il backup della parte finale di un database danneggiato.

Quando si utilizza il backup della parte finale di un database danneggiato, alcuni dei metadati normalmente acquisiti nei backup dei log potrebbero essere non disponibili. Per ulteriori informazioni, vedi la sezione successiva.

Backup della parte finale del log con metadati di backup incompleti

I backup della parte finale del log consentono di acquisire la parte finale del log anche quando il database è offline, è danneggiato oppure è privo di alcuni file di dati. Questo può causare metadati incompleti nei comandi di ripristino delle informazioni e in msdb. Tuttavia, solo i metadati sono incompleti. Il log acquisito è completo e utilizzabile.

Se un backup della parte finale del log include metadati incompleti, nella tabella backupsethas_incomplete_metadata, è impostato su 1. Inoltre, nell'output di RESTORE HEADERONLY, HasIncompleteMetadata è impostato su 1.

Se i metadati in un backup della parte finale del log sono incompleti, nella tabella backupfilegroup manca la maggioranza delle informazioni sui filegroup al momento dell'esecuzione del backup della parte finale del log. La maggioranza delle colonne della tabella backupfilegroup sono NULL. Le uniche colonne significative sono le seguenti:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

Attività correlate

Per creare un backup della parte finale del log, vedere Esecuzione del backup del log delle transazioni quando il database è danneggiato (SQL Server).

Per ripristinare un backup del log delle transazioni, vedere Ripristinare un backup del log delle transazioni (SQL Server).