Procedura: Ripristino fino al punto di errore (Transact-SQL)

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 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 AdventureWorks è 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 AdventureWorks per utilizzare il modello di recupero con registrazione completa eseguendo l'istruzione ALTER DATABASE seguente:

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

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

    BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks_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 AdventureWorks. 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 AdventureWorks
   TO DISK = 'C:\AdventureWorks_Log.bck'
   WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks
   FROM DISK = 'C:\AdventureWorks_Data.bck'
   WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks
   FROM DISK = 'C:\AdventureWorks_Log.bck'
   WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks
   FROM  DISK = 'C:\AdventureWorks_Log.bck'
   WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks
   WITH RECOVERY;
GO