Esempio: Ripristino a fasi di un database (modello di recupero con registrazione completa)
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), C
e 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.
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 backup3 WITH NORECOVERY RESTORE LOG adb FROM backup4 WITH NORECOVERY RESTORE LOG adb FROM backup5 WITH NORECOVERY RESTORE LOG adb FROM tailLogBackup WITH RECOVERY
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 filegroupB
eC
è 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 filegroupC
è 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 backup3 WITH NORECOVERY RESTORE LOG adb FROM backup4 WITH NORECOVERY RESTORE LOG adb FROM backup5 WITH NORECOVERY RESTORE LOG adb FROM tailLogBackup WITH RECOVERY
A questo punto il filegroup primario e i filegroup
A
eC
sono online. Il recupero dei file nel filegroupB
è ancora in sospeso e questo filegroup è offline. Le transazioni posticipate sono state risolte e si procede al troncamento del log.Eseguire un ripristino online del filegroup
B
.Nella terza sequenza di ripristino l'amministratore del database ripristina il filegroup
B
. Il backup del filegroupB
è 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
Esempio: Ripristino a fasi di un database (modello di recupero con registrazione minima)
Esempio: Ripristino a fasi di filegroup selezionati (modello di recupero con registrazione minima)
Esempio: Ripristino online di un file di sola lettura (modello di recupero con registrazione minima)
Vedere 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)