Share via


Procedura: Applicazione del backup di un log delle transazioni (Transact-SQL)

Per applicare un backup del log delle transazioni a un database, è necessario che vengano soddisfatti i requisiti seguenti:

  • Prima della creazione del backup completo o differenziale del database più recente, è necessario che il database utilizzi il modello di recupero con registrazione completa o il modello di recupero con registrazione minima delle operazioni bulk.

  • La sequenza di ripristino per il ripristino dei backup precedenti deve includere l'opzione WITH NORECOVERY.

  • I backup del log devono essere applicati nella sequenza in cui sono stati creati, senza gap nella catena di log. Fatta eccezione per l'ultimo backup del log, è necessario utilizzare l'opzione WITH NORECOVERY, come illustrato di seguito:

    RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
    
  • Quando viene applicato l'ultimo backup del log, è possibile eseguire una delle operazioni seguenti:

    • Recuperare il database nell'ambito dell'ultima istruzione BACKUP LOG:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;
      GO
      
    • Posticipare il recupero del database utilizzando un'istruzione RESTORE DATABASE separata:

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; 
      RESTORE DATABASE <database_name> WITH RECOVERY;
      GO
      

      Il posticipo del recupero del database consente di verificare di avere ripristinato tutti i backup del log necessari. Questo approccio è spesso consigliato quando si esegue un ripristino temporizzato.

Nota importanteImportante

È consigliabile specificare sempre in modo esplicito WITH NORECOVERY oppure WITH RECOVERY in ogni istruzione RESTORE per evitare ambiguità. Questa precauzione è particolarmente importante durante la scrittura di script.

Per applicare un backup del log delle transazioni

  1. Eseguire l'istruzione RESTORE LOG specificando:

    • Il nome del database a cui verrà applicato il log delle transazioni.

    • Il dispositivo di backup da cui verrà ripristinato il backup del log delle transazioni.

    • La clausola NORECOVERY.

    La sintassi di base per questa istruzione è la seguente:

    RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY

    dove database_name è il nome del database e <backup_device>è il nome del dispositivo che contiene il backup del log in fase di ripristino.

  2. Ripetere il passaggio 1 per ogni backup del log delle transazioni che si desidera applicare.

  3. Dopo aver ripristinato l'ultimo backup della sequenza di ripristino, per ripristinare il database utilizzare l'istruzione seguente:

    RESTORE database_name WITH RECOVERY

    Nota importanteImportante

    Se si sta creando un database mirror, omettere il passaggio di recupero. Un database mirror deve rimanere nello stato RESTORING.

Esempio

Per impostazione predefinita, il database AdventureWorks utilizza il modello di recupero con registrazione minima. Per gli esempi seguenti è necessario modificare questo database in modo da utilizzare il modello di recupero con registrazione completa, come illustrato di seguito:

ALTER DATABASE AdventureWorks SET RECOVERY FULL

A. Applicazione di un singolo backup del log delle transazioni

Nell'esempio seguente viene innanzitutto ripristinato il database AdventureWorks da un backup completo del database che risiede in un dispositivo di backup denominato AdventureWorks_1. Viene quindi applicato il primo backup del log delle transazioni che risiede nel dispositivo di backup denominato AdventureWorks_log e infine viene recuperato il database.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO

B. Applicazione di più backup del log delle transazioni

Nell'esempio seguente viene innanzitutto ripristinato il database AdventureWorks da un backup completo del database che risiede in un dispositivo di backup denominato AdventureWorks_1. Vengono quindi applicati in successione i primi tre backup del log delle transazioni che risiedono in uno dispositivo di backup denominato AdventureWorks_log e infine viene recuperato il database.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 2,
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 3,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO