Share via


Esecuzione di un ripristino completo del database (Modello di recupero con registrazione completa)

L'obiettivo di un ripristino completo del database è il ripristino dell'intero database. L'intero database non è in linea per la tutta la durata del ripristino. Prima che sia possibile portare in linea una o più parti del database, tutti i dati vengono recuperati fino a un punto consistente in cui tutte le parti del database sono aggiornate allo stesso punto nel tempo e non sono presenti transazioni di cui non è stato eseguito il commit.

Se si utilizza il modello di recupero con registrazione completa, il database può essere ripristinato fino a uno specifico punto nel tempo. Il punto nel tempo può essere rappresentato dal backup più recente disponibile, da una data e un'ora specifiche o da una transazione contrassegnata.

ms187495.security(it-it,SQL.90).gifNota sulla protezione:
È consigliabile non collegare o ripristinare database provenienti da fonti sconosciute o non attendibili. Questi database potrebbero contenere malware che può eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica di database. Prima di utilizzare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare inoltre il codice nel database, ad esempio stored procedure o altro codice definito dall'utente.

Ripristino di un database completo

Il recupero dello stato di un database al momento dell'errore in genere include i passaggi seguenti:

  1. Eseguire il backup del log delle transazioni attive (definito anche parte finale del log). In questo modo viene creato un backup della parte finale del log. Se il log delle transazioni attivo non è disponibile, tutte le transazioni in quella parte del log vengono perdute.
    ms187495.note(it-it,SQL.90).gifImportante:
    Nel modello di recupero con registrazione minima delle transazioni di massa, per eseguire il backup di un log che contiene operazioni di massa registrate è necessario disporre dell'accesso a tutti i file di dati del database. Se i file di dati non sono accessibili, non è possibile eseguire il backup del log delle transazioni. In questo caso, è necessario ripetere manualmente tutte le modifiche apportate a partire dall'ultimo backup del log.
    Per ulteriori informazioni, vedere [Backup della parte finale del log](ms179314\(v=sql.90\).md).
  2. Ripristinare il backup completo del database più recente senza recuperare il database (RESTORE DATABASE database_name FROM database_name WITH NORECOVERY).
  3. Se sono presenti backup differenziali, ripristinare il più recente senza recuperare il database (RESTORE DATABASE database_name WITH NORECOVERY).
  4. Ripristinare i log in sequenza con NORECOVERY a partire dal primo backup del log delle transazioni creato dopo il backup appena ripristinato.
  5. Recuperare il database (RESTORE DATABASE database_name WITH RECOVERY). In alternativa, è possibile eseguire questo passaggio insieme al ripristino dell'ultimo backup del log.
  6. In genere è possibile eseguire il recupero di un ripristino di database completo rispetto a un punto nel tempo o a una transazione contrassegnata all'interno di un backup di log. Quando si utilizza il modello di recupero con registrazione minima delle transazioni di massa, se il backup del log contiene modifiche con registrazione minima delle transazioni di massa, il recupero temporizzato non tuttavia è possibile. Per ulteriori informazioni, vedere Ripristino di un database fino a un punto all'interno di un backup.

Quando si ripristina completamente un database, utilizzare una singola sequenza di ripristino. Nell'esempio seguente vengono illustrate le opzioni fondamentali in una sequenza di ripristino per lo scenario di ripristino di database completo nel quale il database viene ripristinato fino al punto di errore. Una sequenza di ripristino è costituita da una o più operazioni di ripristino che gestiscono lo spostamento dei dati attraverso una o più fasi del ripristino. La sintassi e i dettagli non rilevanti verranno omessi.

Vengono eseguiti il ripristino e il rollforward del database. Per ridurre il tempo di rollforward, viene utilizzato un database differenziale. Questa sequenza di ripristino è pensata per eliminare la perdita di dati. L'ultimo backup ripristinato è un backup della parte finale del log.

La sintassi di base di RESTORE per la sequenza di ripristino è la seguente:

  1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;
  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;
  3. RESTORE LOG database FROM backup_log WITH NORECOVERY;
    Ripetere questo passaggio di ripristino del log per ogni ulteriore backup del log.
  4. RESTORE DATABASE database WITH RECOVERY;

Esempio

Nell'esempio seguente il database di esempio AdventureWorks è stato impostato per l'utilizzo del modello di recupero con registrazione completa prima del backup del database. Nell'esempio viene creato un backup della parte finale del log del database AdventureWorks. Vengono quindi ripristinati un backup completo del database precedente e un backup del log, nonché il backup della parte finale del log. Il database viene infine recuperato in un passaggio finale separato.

[!NOTA] In questo esempio vengono utilizzati un backup del database e un backup del log creati nella sezione "Utilizzo dei backup del database nel modello di recupero con registrazione completa" di Backup completo del database.

L'esempio inizia con un'istruzione ALTER DATABASE che imposta il modello di recupero su FULL.

USE master;
--Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks 
TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak' 
   WITH NORECOVERY; GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' 
  WITH FILE=1, 
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' 
  WITH FILE=2, 
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
  WITH FILE=3, 
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO

Ripristino fino al punto di errore

Per ripristinare un backup completo del database

Per ripristinare un backup differenziale del database

Per ripristinare un backup del log delle transazioni

Dopo aver ripristinato il backup o i backup dei dati, è necessario ripristinare tutti i backup dei log delle transazioni successivi e quindi recuperare il database.

Per ripristinare un backup utilizzando SMO (SQL Server Management Objects)

Recupero temporizzato

Il modello di recupero con registrazione completa consente di ripristinare il database fino a uno specifico punto nel tempo all'interno di un determinato backup del log. Tale punto nel tempo può corrispondere a una data e un'ora specifiche, a una transazione contrassegnata o a un numero di sequenza del file di log (LSN). Per ulteriori informazioni, vedere Ripristino di un database fino a un punto all'interno di un backup.

Supporto per i backup da versioni precedenti di SQL Server

In SQL Server 2005 è possibile ripristinare un backup del database creato utilizzando SQL Server versione 7.0, SQL Server 2000 o SQL Server 2005. Tuttavia, i backup dei database master, model e msdb creati utilizzando SQL Server 7.0 o SQL Server 2000 non possono essere ripristinati da SQL Server 2005. Inoltre, i backup di log di SQL Server 7.0 che contengono operazioni di creazione di indici non possono essere ripristinati in SQL Server 2000 o in SQL Server 2005.

SQL Server 2005 utilizza un percorso predefinito diverso rispetto alle versioni precedenti di SQL Server. Per ripristinare un database creato nel percorso predefinito di SQL Server 7.0 o SQL Server 2000 da backup è pertanto necessario utilizzare l'opzione MOVE. Per informazioni sul nuovo percorso predefinito, vedere Posizioni dei file per le istanze predefinite e denominate di SQL Server 2005.

[!NOTA] I backup di database creati utilizzando SQL Server 6.5 o versioni precedenti sono in un formato non compatibile e non possono essere ripristinati in SQL Server 2005. Per informazioni su come aggiornare a SQL Server 2005 un database creato utilizzando SQL Server 6.5 o versioni precedenti, vedere Copia di database da SQL Server 6.5 o versioni precedenti.

Vedere anche

Concetti

Backup in base al modello di recupero con registrazione minima delle transazioni di massa
Backup con il modello di recupero con registrazione completa
Backup differenziale del database
Backup completo del database
Riduzione dei tempi di recupero durante il ripristino di un database
Informazioni sul funzionamento dei processi di ripristino e recupero dei backup in SQL Server
Utilizzo dei backup del log delle transazioni

Altre risorse

Utilizzo di sequenze di ripristino per database di SQL Server

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Nuovo contenuto:
  • Aggiunta della nota sulla protezione.