Lezione 7: Ripristino di un database con temporizzazioneLesson 7: Restore a database to a point in time

In questa lezione il database AdventureWorks2014 verrà ripristinato in base a un dato momento tra due backup del log delle transazioni.In this lesson, you will restore the AdventureWorks2014 database to a point in time between two of the transaction log backups.

Con i backup tradizionali, per eseguire il ripristino temporizzato è necessario usare il backup completo del database, ad esempio un backup differenziale, e tutti i file di log delle transazioni fino al e subito dopo il momento in base al quale si esegue il ripristino.With traditional backups, to accomplish point in time restore, you would need to use the full database backup, perhaps a differential backup, and all of the transaction log files up to and just past the point in time to which you wish to restore. Per i backup di snapshot di file sono necessari solo i due file di backup del log che rappresentano i due limiti del periodo di tempo a cui si riferisce il ripristino.With file-snapshot backups, you only need the two adjacent log backup files that provide the goal posts framing the time to which you wish to restore. Sono necessari due soli set di backup di snapshot di file di log poiché ogni backup del log crea uno snapshot di ogni file del database (file di dati e file di log).You only need two log file snapshot backup sets because each log backup creates a file snapshot of each database file (each data file and the log file).

Per ripristinare un database in base a un momento specifico dal set di backup di snapshot di file, seguire questa procedura:To restore a database to a specified point in time from file snapshot backup sets, follow these steps:

  1. Connettersi a SQL Server Management Studio.Connect to SQL Server Management Studio.

  2. Aprire una nuova finestra di query e connettersi all'istanza di SQL Server 2016 del motore di database nella macchina virtuale di Azure.Open a new query window and connect to the SQL Server 2016 instance of the database engine in your Azure virtual machine.

  3. Copiare, incollare ed eseguire lo script Transact-SQL seguente nella finestra della query.Copy, paste and execute the following Transact-SQL script into the query window. Verificare che la tabella Production.Location contenga 29.939 righe prima di eseguire il ripristino temporizzato quando sono presenti meno righe nel passaggio 5.Verify that the Production.Location table has 29,939 rows before we restore it to a point in time when there are fewer rows in step 5.

    
    -- Verify row count at start  
    SELECT COUNT (*) from AdventureWorks2014.Production.Location  
    

    Visualizzato un numero di righe pari a 29.939Row count of 29,939 is displayed

  4. Copiare e incollare lo script Transact-SQL seguente nella finestra della query.Copy and paste the following Transact-SQL script into the query window. Selezionare due file di backup del log adiacenti e convertire il nome del file nella data e nell'ora necessarie per questo script.Select two adjacent log backup files and convert the file name into the date and time you will need for this script. Modificare l'URL in modo appropriato per il nome di account di archiviazione e il contenitore specificato nella lezione 1, specificare i nomi del primo e del secondo file di backup, indicare il tempo STOPAT nel formato "June 26, 2015 01:48 PM" e quindi eseguire lo script.Modify the URL appropriately for your storage account name and the container that you specified in Lesson 1, provide the first and second backup file names, provide the STOPAT time in the format of "June 26, 2015 01:48 PM" and then execute this script. Il completamento di questo script richiederà alcuni minutiThis script will take a few minutes to complete

    
    -- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count  
    ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;  
    RESTORE DATABASE AdventureWorks2014   
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<firstbackupfile>.bak'   
       WITH NORECOVERY,REPLACE;  
    RESTORE LOG AdventureWorks2014   
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<secondbackupfile>.bak'    
       WITH RECOVERY, STOPAT = 'June 26, 2015 01:48 PM';  
    ALTER DATABASE AdventureWorks2014 set multi_user;  
    -- get new count  
    SELECT COUNT (*) FROM AdventureWorks2014.Production.Location ;  
    
  5. Esaminare l'output.Review the output. Si noti che dopo il ripristino il conteggio delle righe è 18.389, il numero di righe tra i backup del log 5 e 6 (il numero di righe conteggiato può variare).Notice that after the restore the row count is 18,389, which is a row count number between log backup 5 and 6 (your row count will vary).

    Riquadro dei risultati con il numero di righe dopo il ripristino temporizzatoResults pane showing the row count after the point in time restore

Lezione successiva:Next Lesson:

Lezione 8. Ripristinare come nuovo database dal backup del logLesson 8. Restore as new database from log backup