Ripristinare un backup del log delle transazioni (SQL Server)Restore a Transaction Log Backup (SQL Server)

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento viene descritto il ripristino di un backup del log delle transazioni in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to restore a transaction log backup in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziareBefore You Begin

PrerequisitiPrerequisites

  • È necessario ripristinare i backup in base all'ordine in cui sono stati creati.Backups must be restored in the order in which they were created. Prima di ripristinare un determinato backup del log delle transazioni, è necessario ripristinare i backup precedenti riportati di seguito senza eseguire il rollback delle transazioni di cui non è stato eseguito il commit, ovvero utilizzando WITH NORECOVERY:Before you can restore a particular transaction log backup, you must first restore the following previous backups without rolling back uncommitted transactions, that is WITH NORECOVERY:

    • Il backup completo del database e l'eventuale ultimo backup differenziale che precedono il backup del log delle transazioni.The full database backup and the last differential backup, if any, taken before the particular transaction log backup. 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.Before the most recent full or differential database backup was created, the database must have been using the full recovery model or bulk-logged recovery model.

    • Tutti i backup del log delle transazioni eseguiti dopo il backup completo del database o il backup differenziale (in caso di ripristino di un backup) e prima del backup del log delle transazioni specifico.All transaction log backups taken after the full database backup or the differential backup (if you restore one) and before the particular transaction log backup. I backup del log devono essere applicati nella sequenza in cui sono stati creati, senza gap nella catena di log.Log backups must be applied in the sequence in which they were created, without any gaps in the log chain.

      Per altre informazioni sui backup di log delle transazioni, vedere Backup di log delle transazioni (SQL Server) e Applicare backup di log delle transazioni (SQL Server).For more information about transaction log backups, see Transaction Log Backups (SQL Server) and Apply Transaction Log Backups (SQL Server).

SicurezzaSecurity

AutorizzazioniPermissions

Le autorizzazioni per l'istruzione RESTORE vengono assegnate ai ruoli in cui le informazioni sull'appartenenza sono sempre disponibili per il server.RESTORE permissions are given to roles in which membership information is always readily available to the server. Poiché è possibile controllare l'appartenenza ai ruoli predefiniti del database solo quando il database è accessibile e non è danneggiato, condizioni che non risultano sempre vere quando si esegue un'operazione RESTORE, i membri del ruolo predefinito del database db_owner non dispongono delle autorizzazioni per l'istruzione RESTORE.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Utilizzo di SQL Server Management StudioUsing SQL Server Management Studio

Avviso

Il normale processo di ripristino prevede la selezione dei backup di log nella finestra di dialogo Ripristina database insieme ai backup differenziali e dei dati.The normal process of a restore is to select the log backups in the Restore Database dialog box along with the data and differential backups.

Per ripristinare un backup del log delle transazioniTo restore a transaction log backup

  1. Dopo aver stabilito la connessione all'istanza appropriata del MicrosoftMicrosoft Motore di database di SQL ServerSQL Server Database Engine, in Esplora oggetti fare clic sul nome del server per espandere l'albero del server.After connecting to the appropriate instance of the MicrosoftMicrosoft Motore di database di SQL ServerSQL Server Database Engine, in Object Explorer, click the server name to expand the server tree.

  2. Espandere Databasee, a seconda del database, selezionare un database utente o espandere Database di sistema e selezionare un database di sistema.Expand Databases, and, depending on the database, either select a user database or expand System Databases and select a system database.

  3. Fare clic con il pulsante destro del mouse sul database, scegliere Attività, Ripristina, quindi fare clic su Log delle transazioniper aprire la finestra di dialogo Ripristina log delle transazioni .Right-click the database, point to Tasks, point to Restore, and then click Transaction Log, which opens the Restore Transaction Log dialog box.

    Nota

    Se Log delle transazioni non è disponibile, potrebbe essere necessario ripristinare un backup completo o differenziale.If Transaction Log is grayed out, you may need to restore a full or differential backup first. Utilizzare la finestra di dialogo di backup Database .Use the Database backup dialog box.

  4. Nella casella di riepilogo a discesa Database della pagina Generale selezionare il nome di un database.On the General page, in the Database list box, select the name of a database. Tale elenco include solo database nello stato di ripristino in corso.Only databases in the restoring state are listed.

  5. Per specificare l'origine e il percorso dei set di backup da ripristinare, fare clic su una delle opzioni seguenti:To specify the source and location of the backup sets to restore, click one of the following options:

    • Da backup precedenti del databaseFrom previous backups of database

      Selezionare il database da ripristinare dall'elenco a discesa.Select the database to restore from the drop-down list. Nell'elenco sono inclusi solo i database di cui è stato eseguito il backup in base alla cronologia dei backup di msdb .The list contains only databases that have been backed up according to the msdb backup history.

    • Da file o nastroFrom file or tape

      Fare clic sul pulsante Sfoglia (...) per aprire la finestra di dialogo Seleziona dispositivi di backup .Click the browse (...) button to open the Select backup devices dialog box. Nella casella Tipi di supporti di backup selezionare uno dei tipi di dispositivi elencati.In the Backup media type box, select one of the listed device types. Per selezionare uno o più dispositivi per la casella Supporti di backup , fare clic su Aggiungi.To select one or more devices for the Backup media box, click Add.

      Dopo avere aggiunto i dispositivi desiderati nella casella di riepilogo Dispositivi di backup , fare clic su OK per tornare alla pagina Generale .After you add the devices you want to the Backup media list box, click OK to return to the General page.

  6. Nella griglia Selezionare i backup del log delle transazioni da ripristinare selezionare i backup che si desidera ripristinare.In the Select the transaction log backups to restore grid, select the backups to restore. Nella griglia sono elencati i backup del log delle transazioni disponibili per il database selezionato.This grid lists the transaction log backups available for the selected database. Un backup di log è disponibile solo se il relativo valore Primo LSN è maggiore del valore Ultimo LSN del database.A log backup is available only if its First LSN greater than the Last LSN of the database. I backup di log vengono elencati in base all'ordine dei numeri di sequenza del file di log (LSN) in essi contenuti e devono essere ripristinati in base a tale ordine.Log backups are listed in the order of the log sequence numbers (LSN) they contain, and they must be restored in this order.

    Nella tabella seguente vengono elencate le intestazioni delle colonne della griglia con una descrizione dei rispettivi valori.The following table lists the column headers of the grid and describes their values.

    IntestazioneHeader ValoreValue
    RipristinaRestore Le caselle di controllo selezionate indicano i set di backup da ripristinare.Selected check boxes indicate the backup sets to be restored.
    NomeName Nome del set di backup.Name of the backup set.
    ComponenteComponent Componente di cui viene eseguito il backup: Database, File, o <blank> (nel caso di log delle transazioni).Backed-up component: Database, File, or <blank> (for transaction logs).
    DatabaseDatabase Nome del database su cui viene eseguita l'operazione di backup.Name of the database involved in the backup operation.
    Data inizioStart Date Data e ora di inizio dell'operazione di backup, visualizzate in base alle impostazioni internazionali del client.Date and time when the backup operation began, presented in the regional setting of the client.
    Data fineFinish Date Data e ora di fine dell'operazione di backup, visualizzate in base alle impostazioni internazionali del client.Date and time when the backup operation finished, presented in the regional setting of the client.
    Primo LSNFirst LSN Numero di sequenza del file di log della prima transazione nel set di backup.Log sequence number of the first transaction in the backup set. Vuoto per i backup dei file.Blank for file backups.
    Ultimo LSNLast LSN Numero di sequenza del file di log dell'ultima transazione nel set di backup.Log sequence number of the last transaction in the backup set. Vuoto per i backup dei file.Blank for file backups.
    LSN checkpointCheckpoint LSN Numero di sequenza del file di log del checkpoint più recente al momento della creazione del backup.Log sequence number of the most recent checkpoint at the time the backup was created.
    LSN completoFull LSN Numero di sequenza del file di log dell'operazione più recente di backup completo del database.Log sequence number of the most recent full database backup.
    ServerServer Nome dell'istanza del motore di database in cui è stata eseguita l'operazione di backup.Name of the Database Engine instance that performed the backup operation.
    Nome utenteUser Name Nome dell'utente che ha eseguito l'operazione di backup.Name of the user who performed the backup operation.
    DimensioneSize Dimensioni in byte del set di backup.Size of the backup set in bytes.
    PosizionePosition Posizione del set di backup nel volume.Position of the backup set in the volume.
    ScadenzaExpiration Data e ora di scadenza del set di backup.Date and time the backup set expires.
  7. Selezionare una delle opzioni seguenti:Select one of the following:

    • TemporizzazionePoint in time

      Mantenere l'impostazione predefinita (Più recente) oppure selezionare una data e un'ora specifiche, facendo clic sul pulsante Sfoglia per visualizzare la finestra di dialogo Ripristino temporizzato .Either retain the default (Most recent possible) or select a specific date and time by clicking the browse button, which opens the Point in Time Restore dialog box.

    • Transazione contrassegnataMarked transaction

      Consente di ripristinare il database fino a una transazione contrassegnata in precedenza.Restore the database to a previously marked transaction. Se si seleziona questa opzione, verrà visualizzata la finestra di dialogo Seleziona transazione contrassegnata , che include una griglia in cui sono elencate le transazioni contrassegnate disponibili nei backup del log delle transazioni selezionati.Selecting this option launches the Select Marked Transaction dialog box, which displays a grid listing the marked transactions available in the selected transaction log backups.

      Per impostazione predefinita, il ripristino viene eseguito fino alla transazione contrassegnata esclusa.By default, the restore is up to, but excluding, the marked transaction. Per ripristinare anche la transazione contrassegnata, selezionare l'opzione Includi transazione contrassegnata.To restore the marked transaction also, select Include marked transaction.

      Nella tabella seguente vengono elencate le intestazioni delle colonne della griglia con una descrizione dei rispettivi valori.The following table lists the column headers of the grid and describes their values.

      IntestazioneHeader ValoreValue
      <vuoto><blank> Consente di visualizzare una casella di controllo per selezionare il contrassegno.Displays a checkbox for selecting the mark.
      Contrassegno transazioneTransaction Mark Nome della transazione contrassegnata specificato dall'utente durante l'esecuzione del commit della transazione.Name of the marked transaction specified by the user when the transaction was committed.
      DataDate Data e ora assegnate alla transazione quando ne è stato eseguito il commit.Date and time of the transaction when it was committed. Vengono visualizzate la data e l'ora della transazione registrate nella tabella msdbgmarkhistory , non nella data e ora del computer client.Transaction date and time are displayed as recorded in the msdbgmarkhistory table, not in the client computer's date and time.
      DescrizioneDescription Eventuale descrizione della transazione contrassegnata specificata dall'utente quando è stato eseguito il commit della transazione.Description of marked transaction specified by the user when the transaction was committed (if any).
      LSNLSN Numero di sequenza del file di log (LSN) della transazione contrassegnata.Log sequence number of the marked transaction.
      DatabaseDatabase Nome del database in cui è stato eseguito il commit della transazione contrassegnata.Name of the database where the marked transaction was committed.
      Nome utenteUser Name Nome dell'utente del database che ha eseguito il commit della transazione contrassegnata.Name of the database user who committed the marked transaction.
  8. Per visualizzare o selezionare le opzioni avanzate, fare clic su Opzioni nel riquadro Selezione pagina .To view or select the advanced options, click Options in the Select a page pane.

  9. Nella sezione Opzioni di ripristino le scelte disponibili sono:In the Restore options section, the choices are:

    • Mantieni le impostazioni di replica (WITH KEEP_REPLICATION)Preserve the replication settings (WITH KEEP_REPLICATION)

      Consente di mantenere le impostazioni di replica durante il ripristino di un database pubblicato in un server diverso da quello in cui è stato creato il database.Preserves the replication settings when restoring a published database to a server other than the server where the database was created.

      Questa opzione è disponibile solo in combinazione con l'opzione Lascia il database pronto per l'utilizzo eseguendo il rollback delle transazioni di cui non è stato eseguito il commit (descritta più avanti), equivalente al ripristino di un backup con l'opzione RECOVERY .This option is available only with the Leave the database ready for use by rolling back the uncommitted transactions... option (described later), which is equivalent to restoring a backup with the RECOVERY option.

      La selezione di questa opzione equivale all'uso dell'opzione KEEP_REPLICATION in un'istruzione Transact-SQLTransact-SQLRESTORE .Checking this option is equivalent to using the KEEP_REPLICATION option in a Transact-SQLTransact-SQLRESTORE statement.

    • Chiedi conferma prima del ripristino di ogni backupPrompt before restoring each backup

      Prima di ripristinare ogni set di backup successivo al primo, questa opzione visualizza la finestra di dialogo Continua con il ripristino , in cui viene richiesta conferma della continuazione della sequenza di ripristino.Before restoring each backup set (after the first), this option brings up the Continue with Restore dialog box, which asks you to indicate whether you want to continue the restore sequence. In questa finestra di dialogo vengono visualizzati il nome del set di supporti successivo, se disponibile, il nome del set di backup e la descrizione del set di backup.This dialog displays the name of the next media set (if available), the backup set name, and backup set description.

      Questa opzione risulta particolarmente utile quando è necessario cambiare nastri per diversi set di supporti.This option is particularly useful when you must swap tapes for different media sets. Ad esempio, è possibile utilizzarla quando nel server è disponibile un solo dispositivo nastro.For example, you can use it when the server has only one tape device. Attendere di essere pronti per procedere prima di fare clic su OK.Wait until you are ready to proceed before clicking OK.

      Se si fa clic su No , il database verrà mantenuto nello stato di ripristino in corso.Clicking No leaves the database in the restoring state. Se lo si desidera, è possibile continuare la sequenza di ripristino dopo il completamento dell'ultimo ripristino.At your convenience, you can continue the restore sequence after the last restore that completed. Se il backup successivo è un backup di dati o differenziale, utilizzare nuovamente l'attività Ripristina database .If the next backup is a data or differential backup, use the Restore Database task again. Se il backup successivo è un backup del log, utilizzare l'attività Ripristina log delle transazioni .If the next backup is a log backup, use the Restore Transaction Log task.

    • Limita accesso al database ripristinato (WITH RESTRICTED_USER)Restrict access to the restored database (WITH RESTRICTED_USER)

      Rende disponibile il database ripristinato solo per i membri di db_owner, dbcreatoro sysadmin.Makes the restored database available only to the members of db_owner, dbcreator, or sysadmin.

      La selezione di questa opzione equivale all'uso dell'opzione RESTRICTED_USER in un'istruzione Transact-SQLTransact-SQLRESTORE .Checking this option is synonymous to using the RESTRICTED_USER option in a Transact-SQLTransact-SQLRESTORE statement.

  10. Nel gruppo di opzioni Stato di recupero specificare lo stato desiderato per il database dopo l'operazione di ripristino.For the Recovery state options, specify the state of the database after the restore operation.

    • Lascia il database pronto per l'uso eseguendo il rollback delle transazioni di cui non è stato eseguito il commit. I log delle transazioni aggiuntivi non possono essere ripristinati. (RESTORE WITH RECOVERY)Leave the database ready for use by rolling back uncommitted transactions. Additional transaction logs cannot be restored. (RESTORE WITH RECOVERY)

      Esegue il recupero del database.Recovers the database. Questa opzione equivale all'opzione RECOVERY in un'istruzione Transact-SQLTransact-SQLRESTORE .This option is equivalent to the RECOVERY option in a Transact-SQLTransact-SQLRESTORE statement.

      Selezionare questa opzione solo se non sono disponibili file di log da ripristinare.Choose this option only if you have no log files you want to restore.

    • Lascia il database non operativo e non eseguire il rollback delle transazioni di cui non è stato eseguito il commit. I log delle transazioni aggiuntivi possono essere ripristinati. (RESTORE WITH NORECOVERY)Leave the database non-operational, and do not roll back uncommitted transactions. Additional transaction logs can be restored. (RESTORE WITH NORECOVERY)

      Il database viene lasciato nello stato RESTORING .Leaves the database unrecovered, in the RESTORING state. Questa opzione equivale all'uso dell'opzione NORECOVERY in un'istruzione Transact-SQLTransact-SQLRESTORE .This option is equivalent to using the NORECOVERY option in a Transact-SQLTransact-SQLRESTORE statement.

      Quando si seleziona questa opzione, l'opzione Mantieni le impostazioni di replica non è disponibile.When you choose this option, the Preserve replication settings option is unavailable.

      Importante

      Nel caso di un database mirror o secondario, selezionare sempre questa opzione.For a mirror or secondary database, always select this option.

    • Lascia il database in modalità sola lettura. Annulla le transazioni di cui non è stato eseguito il commit e salva le azioni di rollback in un file standby in modo che gli effetti del recupero possano essere annullati. (RESTORE WITH STANDBY)Leave the database in read-only mode. Undo uncommitted transactions, but save the undo actions in a file so that recovery effects can be reversed. (RESTORE WITH STANDBY)

      Il database viene lasciato nello stato di standby.Leaves the database in a standby state. Questa opzione equivale all'uso dell'opzione STANDBY in un'istruzione Transact-SQLTransact-SQLRESTORE .This option is equivalent to using the STANDBY option in a Transact-SQLTransact-SQLRESTORE statement.

      Se si seleziona questa opzione è necessario specificare un file standby.Choosing this option requires that you specify a standby file.

  11. Facoltativamente, specificare un nome per il file standby nella casella di testo File standby .Optionally, specify a standby file name in the Standby file text box. Questa opzione è necessaria se il database viene lasciato in modalità sola lettura.This option is required if you leave the database in read-only mode. È possibile cercare il file standby per selezionarlo oppure digitarne direttamente il percorso nella casella di testo.You can browse for the standby file or type its pathname in the text box.

Utilizzo di Transact-SQLUsing Transact-SQL

Importante

È consigliabile specificare sempre in modo esplicito WITH NORECOVERY oppure WITH RECOVERY in ogni istruzione RESTORE per evitare ambiguità.We recommend that you always explicitly specify either WITH NORECOVERY or WITH RECOVERY in every RESTORE statement to eliminate ambiguity. Questa precauzione è particolarmente importante durante la scrittura di script.This is particularly important when writing scripts.

Per ripristinare un backup del log delle transazioniTo restore a transaction log backup

  1. Eseguire l'istruzione RESTORE LOG per applicare il backup del log delle transazioni specificando:Execute the RESTORE LOG statement to apply the transaction log backup, specifying:

    • Nome del database a cui verrà applicato il log delle transazioni.The name of the database to which the transaction log will be applied.

    • Il dispositivo di backup da cui verrà ripristinato il backup del log delle transazioni.The backup device where the transaction log backup will be restored from.

    • Clausola NORECOVERY.The NORECOVERY clause.

      La sintassi di base per questa istruzione è la seguente:The basic syntax for this statement is as follows:

      RESTORE LOG nome_database FROM <dispositivo_backup> WITH NORECOVERY.RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY.

      Dove nome_database è il nome del database e <dispositivo_backup> è il nome del dispositivo che contiene il backup del log in fase di ripristino.Where database_name is the name of database and <backup_device>is the name of the device that contains the log backup being restored.

  2. Ripetere il passaggio 1 per ogni backup del log delle transazioni che si desidera applicare.Repeat step 1 for each transaction log backup you have to apply.

  3. Dopo aver ripristinato l'ultimo backup della sequenza di ripristino, per recuperare il database utilizzare una delle istruzioni seguenti:After restoring the last backup in your restore sequence, to recover the database use one of the following statements:

    • Recuperare il database nell'ambito dell'ultima istruzione RESTORE LOG:Recover the database as part of the last RESTORE LOG statement:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;  
      GO  
      
    • Posticipare il recupero del database utilizzando un'istruzione RESTORE DATABASE separata:Wait to recover the database by using a separate RESTORE DATABASE statement:

      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.Waiting to recover the database gives you the opportunity to verify that you have restored all of the necessary log backups. Questo approccio è spesso consigliato quando si esegue un ripristino temporizzato.This approach is often advisable when you are performing a point-in-time restore.

    Importante

    Se si sta creando un database mirror, omettere il passaggio di recupero.If you are creating a mirror database, omit the recovery step. Un database mirror deve rimanere nello stato RESTORING.A mirror database must remain in the RESTORING state.

Esempi (Transact-SQL)Examples (Transact-SQL)

Per impostazione predefinita, il database AdventureWorks2012AdventureWorks2012 utilizza il modello di recupero con registrazione minima.By default, the AdventureWorks2012AdventureWorks2012 database uses the simple recovery model. Per gli esempi seguenti è necessario modificare questo database in modo da utilizzare il modello di recupero con registrazione completa, come illustrato di seguito:The following examples require modifying the database to use the full recovery model, as follows:

ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;  

A.A. Applicazione di un singolo backup del log delle transazioniApplying a single transaction log backup

Nell'esempio seguente viene innanzitutto ripristinato il database AdventureWorks2012AdventureWorks2012 da un backup completo del database che risiede in un dispositivo di backup denominato AdventureWorks2012_1.The following example starts by restoring the AdventureWorks2012AdventureWorks2012 database by using a full database backup that resides on a backup device named AdventureWorks2012_1. Viene quindi applicato il primo backup del log delle transazioni che risiede nel dispositivo di backup denominato AdventureWorks2012_logeThe example then applies the first transaction log backup that resides on a backup device named AdventureWorks2012_log. infine viene recuperato il database.Finally, the example recovers the database.

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorks2012_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 1,  
   WITH NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2012  
   WITH RECOVERY;  
GO  

B.B. Applicazione di più backup del log delle transazioniApplying multiple transaction log backups

Nell'esempio seguente viene innanzitutto ripristinato il database AdventureWorks2012AdventureWorks2012 da un backup completo del database che risiede in un dispositivo di backup denominato AdventureWorks2012_1.The following example starts by restoring the AdventureWorks2012AdventureWorks2012 database by using a full database backup that resides on a backup device named AdventureWorks2012_1. Vengono quindi applicati in successione i primi tre backup del log delle transazioni che risiedono in uno dispositivo di backup denominato AdventureWorks2012_logeThe example then applies, one by one, the first three transaction log backups that reside on a backup device named AdventureWorks2012_log. infine viene recuperato il database.Finally, the example recovers the database.

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorks2012_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 2,  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 3,  
   WITH NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2012  
   WITH RECOVERY;  
GO  

Attività correlateRelated Tasks

Vedere ancheSee Also

RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Applicare backup di log delle transazioni (SQL Server)Apply Transaction Log Backups (SQL Server)