Ripristinare un database fino al punto di errore - Recupero con registrazione completa

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 recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Per eseguire il ripristino fino al punto di errore

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

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

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

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

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

    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 AdventureWorks2022 è il modello di recupero con registrazione minima. Dato che questo modello di recupero non supporta il ripristino in corrispondenza del punto in cui si è verificato un errore, impostare AdventureWorks2022 per usare il modello di recupero con registrazione completa eseguendo l'istruzione ALTER DATABASE seguente:

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

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

    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 AdventureWorks2022 . In questo passaggio si suppone che il disco del log sia accessibile.

Innanzitutto, nell'esempio viene creato un backup della parte finale del log del database che acquisisce il log attivo e lascia 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 viene recuperato 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  

Vedi anche

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)