Esempio: Ripristino a fasi di un database (modello di recupero con registrazione completa)

Si applica a:SQL Server

Con una sequenza di ripristino a fasi, il database viene ripristinato e recuperato in varie fasi a livello di filegroup, partendo dal filegroup primario e da tutti i filegroup secondari in lettura/scrittura.

In questo esempio il database adb viene ripristinato in un nuovo computer dopo un'emergenza. Dato che il database utilizza il modello di recupero con registrazione completa, prima dell'avvio del ripristino è necessario eseguire un backup della parte finale del log per il database. Prima dell'emergenza, tutti i filegroup erano online. Il filegroup B è di sola lettura. Tutti i filegroup secondari devono essere ripristinati, ma il ripristino avviene in ordine di importanza: A (importanza massima), Ce infine B. In questo esempio sono presenti quattro backup dei log, incluso il backup della parte finale del log.

Backup della parte finale del log

Prima di ripristinare il database, è necessario che l'amministratore del database esegua il backup della parte finale del log. Dato che il database è danneggiato, la creazione di tale backup richiede l'utilizzo dell'opzione NO_TRUNCATE:

BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE  

Il backup della parte finale del log è l'ultimo backup applicato nelle sequenze di ripristino seguenti.

Sequenze di ripristino

Nota

La sintassi di una sequenza di ripristino online è la stessa di una sequenza di ripristino offline.

  1. Ripristino parziale del filegroup primario e secondario A.

    RESTORE DATABASE adb FILEGROUP='Primary' FROM backup1   
       WITH PARTIAL, NORECOVERY  
    RESTORE DATABASE adb FILEGROUP='A' FROM backup2   
       WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    
  2. Eseguire un ripristino online del filegroup C.

    A questo punto sono online il filegroup primario e il filegroup secondario A . Il recupero di tutti i file nei filegroup B e C è in sospeso e i filegroup sono offline.

    I messaggi relativi all'ultima istruzione RESTORE LOG nel passaggio 1 indicano che il rollback delle transazioni che interessano il filegroup C è stato posticipato, poiché tale filegroup non è disponibile. È possibile continuare a eseguire le normali operazioni, ma sono attivi blocchi da parte di queste transazioni e non sarà possibile eseguire il troncamento del log fino al completamento del rollback.

    Nella seconda sequenza di ripristino l'amministratore del database ripristina il filegroup C:

    RESTORE DATABASE adb FILEGROUP='C' FROM backup2a WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    

    A questo punto il filegroup primario e i filegroup A e C sono online. Il recupero dei file nel filegroup B è ancora in sospeso e questo filegroup è offline. Le transazioni posticipate sono state risolte e si procede al troncamento del log.

  3. Eseguire un ripristino online del filegroup B.

Nella terza sequenza di ripristino l'amministratore del database ripristina il filegroup B. Il backup del filegroup B è stato eseguito dopo la sua conversione in filegroup di sola lettura. Non è pertanto necessario eseguire il roll forward del filegroup durante il recupero.

RESTORE DATABASE adb FILEGROUP='B' FROM backup2b WITH RECOVERY  

In questa fase tutti i filegroup sono online.

Esempi aggiuntivi

Vedi anche

BACKUP (Transact-SQL)
Ripristino in linea (SQL Server)
Applicare backup di log delle transazioni (SQL Server)
RESTORE (Transact-SQL)
Ripristini a fasi (SQL Server)