Condividi tramite


Numeri di sequenza del file di log e pianificazione del ripristino

 Le informazioni contenute in questo argomento sono rilevanti per i database di SQL Server in cui viene utilizzato il modello di recupero con registrazione completa.

I più importanti numeri di sequenza del file di log (LSN) per la pianificazione del ripristino sono i primi e gli ultimi. Tali LSN possono essere ottenuti dalle posizioni seguenti:

  • Tabella backupset in msdb. Le colonne sono denominate first_lsn e last_lsn.

  • Istruzione RESTORE HEADERONLY. Le colonne sono denominate FirstLSN e LastLSN.

Nella tabella seguente viene fornita la definizione di questi termini per diversi tipi di backup.

Termine

Definizione

first_lsn o FirstLSN

Numero di sequenza del file di log del primo record di log o del record di log meno recente nel set di backup

Per i backup di dati e differenziali, il primo numero LSN identifica il primo record di log in ordine temporale necessario per l'esecuzione del recupero con questo backup.

Per i backup del log, il primo numero LSN identifica il primo record del log incluso nel backup.

last_lsn o LastLSN

Numero di sequenza del file di log del record di log successivo al set di backup.

L'ultimo numero LSN identifica il primo record di log dopo la fine del backup. Per i backup di dati e differenziali e per i backup del log contenenti operazioni con registrazione minima delle operazioni bulk, il rollforward deve arrivare almeno a questo numero LSN, o i dati copiati durante il ripristino non saranno consistenti.

Per i backup del log, il backup del log include i record del log fino a quello immediatamente precedente il numero LSN.

Numeri di sequenza del file di log e backup di dati o differenziali

Per i backup di dati e differenziali, i dati del log compresi fra first_lsn e last_lsn vengono inclusi nel backup. Questo consente di utilizzare il backup senza bisogno di backup del log per eseguire il recupero fino a last_lsn.

In un backup di dati o differenziale, last_lsn è il punto di recupero più lontano possibile nel tempo se si utilizza il backup in una sequenza di ripristino. Se è necessario un punto di recupero meno recente, è necessario utilizzare un backup precedente.

In fase di pianificazione del backup del log da utilizzare per eseguire il rollforward dopo il ripristino di un backup dei dati o differenziale, è in genere necessario iniziare con il primo backup del log successivo a tale backup dei dati o differenziale. Quando si esaminano le proprietà del backup è possibile verificare la presenza di un backup del log per il quale first_lsn è minore o uguale a last_lsn del backup dei dati o differenziale e last_lsn è maggiore di last_lsn del backup del log dei dati o differenziale.

Numeri di sequenza del file di log e backup del log in una catena di log

Una nuova catena di log inizia con il primo backup completo del database successivo alla creazione 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. Nel primo backup del log di una catena, backupset.begins_log_chain = 1.

First_lsn e last_lsn vengono utilizzati per collegare i backup del log in una sequenza consecutiva, ovvero una catena di log. È possibile utilizzare una sequenza di backup del log consecutivi per eseguire il rollforward di un database dal backup di dati o differenziale più recente oppure, nel caso di backup di dati e differenziali assenti o danneggiati, da un backup più lontano nel tempo.

In un backup del log, first_lsn è il numero LSN del primo record del log presente nel backup. A partire da questo record, il backup del log include i record del log fino al record immediatamente precedente quello il cui LSN è last_lsn. Due backup del log sono consecutivi solo se il numero LSN dell'ultimo record del log del backup precedente (Backup_A) è maggiore o uguale al numero LSN del primo record del log del backup successivo (Backup_B), ovvero se Backup_A.last_lsn >= Backup_B.first_lsn. Se questa condizione non si verifica, fra i due backup è presente un gap.

Di seguito è illustrato il significato della relazione fra questi numeri LSN:

  • A.last_lsn = B.first_lsn

    Se A.last_lsn = B.first_lsn, B è normalmente il backup del log creato immediatamente dopo A.

    La relazione è illustrata nella figura seguente. Si noti che il record del log n presente nel backup del log B, è stato registrato come last_lsn nel backup del log A e come first_lsn nel backup del log B.

    last_lsn del backup del log A=first_lsn del backup del log B

  • A.last_lsn > B.first_lsn

    Se A.last_lsn > B.first_lsn, esiste una sovrapposizione. Le sovrapposizioni di norma sono causate dalla creazione di un backup del log di sola copia oppure del primo backup del log successivo a un recupero temporizzato. La sovrapposizione può interessare diversi fork di recupero. Per ulteriori informazioni, vedere Percorsi di recupero.

Cause di interruzione delle catene di log

In genere, Motore di database di SQL Server impedisce la creazione di gap nella sequenza di backup del log, mantenendo intatta la catena di log. Un amministratore di database, tuttavia, può interrompere la catena di log passando al modello di recupero con registrazione minima, quindi di nuovo al modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Non è possibile eseguire il rollforward se sono state effettuate modifiche al modello di recupero che implicano l'utilizzo del modello di recupero con registrazione minima, in quanto la catena di log è interrotta. Dopo il passaggio al modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, è necessario creare una nuova base differenziale o un nuovo set di basi differenziali. In alternativa, è possibile eliminare il gap utilizzando backup differenziali.