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), 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 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
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 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
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 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
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)
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)