Esempio: Ripristino a fasi di un database (modello di recupero con registrazione completa)Example: Piecemeal Restore of Database (Full Recovery Model)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

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.A piecemeal restore sequence restores and recovers a database in stages at the filegroup level, beginning with the primary and all read-write, secondary filegroups.

In questo esempio il database adb viene ripristinato in un nuovo computer dopo un'emergenza.In this example, database adb is restored to a new computer after a disaster. 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.The database is using the full recovery model; therefore, before the restore starts, a tail-log backup must be taken of the database. Prima dell'emergenza, tutti i filegroup erano online.Before the disaster, all the filegroups are online. Il filegroup B è di sola lettura.Filegroup B is read-only. Tutti i filegroup secondari devono essere ripristinati, ma il ripristino avviene in ordine di importanza: A (importanza massima), Ce infine B.All of the secondary filegroups must be restored, but they are restored in order of importance: A (highest), C, and lastly B. In questo esempio sono presenti quattro backup dei log, incluso il backup della parte finale del log.In this example, there are four log backups, including the tail-log backup.

Backup della parte finale del logTail-Log Backup

Prima di ripristinare il database, è necessario che l'amministratore del database esegua il backup della parte finale del log.Before restoring the database, the database administrator must back up the tail of the log. Dato che il database è danneggiato, la creazione di tale backup richiede l'utilizzo dell'opzione NO_TRUNCATE:Because the database is damaged, creating the tail-log backup requires using the NO_TRUNCATE option:

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.The tail-log backup is the last backup that is applied in the following restore sequences.

Sequenze di ripristinoRestore Sequences

Nota

La sintassi di una sequenza di ripristino online è la stessa di una sequenza di ripristino offline.The syntax for an online restore sequence is the same as for an offline restore sequence.

  1. Ripristino parziale del filegroup primario e secondario A.Partial restore of the primary and secondary filegroup 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  
    
  2. Eseguire un ripristino online del filegroup C.Online restore of filegroup C.

    A questo punto sono online il filegroup primario e il filegroup secondario A .At this point, the primary filegroup and secondary filegroup A are online. Il recupero di tutti i file nei filegroup B e C è in sospeso e i filegroup sono offline.All the files in filegroups B and C are recovery pending, and the filegroups are 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.Messages from the last RESTORE LOG statement in step 1 indicate that rollback of transactions that involve filegroup C was deferred, because this filegroup is not available. È 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.Regular operations can continue, but locks are held by these transactions and log truncation will not occur until the rollback can complete.

    Nella seconda sequenza di ripristino l'amministratore del database ripristina il filegroup C:In the second restore sequence, the database administrator restores 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 e C sono online.At this point the primary and filegroups A and C are online. Il recupero dei file nel filegroup B è ancora in sospeso e questo filegroup è offline.Files in filegroup B remain recovery pending, with the filegroup offline. Le transazioni posticipate sono state risolte e si procede al troncamento del log.Deferred transactions have been resolved, and log truncation occurs.

  3. Eseguire un ripristino online del filegroup B.Online restore of filegroup B.

    Nella terza sequenza di ripristino l'amministratore del database ripristina il filegroup B.In the third restore sequence, the database administrator restores 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.The backup of filegroup B was taken after the filegroup became read-only; therefore, it does not have to be rolled forward during recovery.

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

    In questa fase tutti i filegroup sono online.All filegroups are now online.

Esempi aggiuntiviAdditional Examples

Vedere ancheSee Also

BACKUP (Transact-SQL) BACKUP (Transact-SQL)
Ripristino online (SQL Server) Online Restore (SQL Server)
Applicare backup log delle transazioni (SQL Server) Apply Transaction Log Backups (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Ripristini a fasi (SQL Server) Piecemeal Restores (SQL Server)