Ripristinare il database fino al punto di guasto - Recupero completo

Si applica a:SQL Server

In questo argomento vengono fornite informazioni su come eseguire il ripristino fino al punto di errore. L'argomento è rilevante solo per i database che utilizzano i modelli di ripristino con registrazione completa o con registrazione minima delle operazioni in blocco.

Per eseguire il ripristino al punto di guasto

  1. Eseguire il backup della parte finale del log eseguendo l'istruzione di base BACKUP seguente:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Ripristinare un backup completo del database eseguendo l'istruzione di base RESTORE DATABASE seguente:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. Facoltativamente, ripristinare un backup differenziale del database eseguendo l'istruzione di base RESTOREDATABASE seguente:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Applicate ogni log delle transazioni, incluso il backup finale del log creato nel passaggio 1, specificando WITH NORECOVERY nell'istruzione RESTORE LOG:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Ripristinare il database eseguendo l'istruzione seguente RESTOREDATABASE :

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Esempio

Prima che sia possibile eseguire l'esempio, è necessario completare le operazioni preliminari seguenti:

  1. Il modello di recupero predefinito del database AdventureWorks2025 è il modello di recupero semplice. Poiché questo modello di recupero non supporta il ripristino fino al momento dell'errore, impostare AdventureWorks2025 affinché usi il modello di recupero completo eseguendo l'istruzione ALTER DATABASE seguente:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  
    
  2. Creare un backup completo del database usando l'istruzione seguente BACKUP:

    BACKUP DATABASE AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Data.bck';  
    
  3. Creare un backup del log in modo routinario.

    BACKUP LOG AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Log.bck';  
    

Nell'esempio seguente vengono ripristinati i backup creati in precedenza, dopo la creazione di un backup della parte finale del log del database AdventureWorks2025 . In questo passaggio si suppone che il disco del log sia accessibile.

Innanzitutto, nell'esempio viene creato un backup del tail-log del database che acquisisce il log attivo e mantiene il database nello stato di ripristino. Quindi, nell'esempio viene ripristinato il backup del database e vengono applicati il backup del log di routine creato in precedenza e il backup della parte finale del log. Infine, l'esempio ripristina il database in un passaggio separato.

Nota

Il comportamento predefinito consiste nel recuperare un database come parte dell'istruzione che ripristina il backup finale.

/* Example of restoring a to the point of failure */  
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.  
BACKUP LOG AdventureWorks2022  
   TO DISK = 'C:\AdventureWorks2022_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 2: Restore the full database backup.  
RESTORE DATABASE AdventureWorks2022  
   FROM DISK = 'C:\AdventureWorks2022_Data.bck'  
   WITH NORECOVERY;  
GO  
-- Step 3: Restore the first transaction log backup.  
RESTORE LOG AdventureWorks2022  
   FROM DISK = 'C:\AdventureWorks2022_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 4: Restore the tail-log backup.  
RESTORE LOG AdventureWorks2022  
   FROM  DISK = 'C:\AdventureWorks2022_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 5: Recover the database.  
RESTORE DATABASE AdventureWorks2022  
   WITH RECOVERY;  
GO