Esecuzione di operazioni di ripristino di file (modello di recupero con registrazione completa)

Data aggiornamento: 17 luglio 2006

Icona con disco di database blu Le informazioni in questo argomento sono rilevanti solo per i database che contengono più file o filegroup e che utilizzano il modello di recupero con registrazione completa o con registrazione minima delle transazioni di massa.

L'obiettivo di un ripristino di file consiste nel ripristinare uno o più file danneggiati senza ripristinare l'intero database. Tutte le edizioni di SQL Server supportano il ripristino di file quando il database non è in linea (ripristino non in linea della pagina). SQL Server 2005 Standard Edition, SQL Server 2005 Express Edition e SQL Server 2005 Workgroup Edition supportano solo il ripristino non in linea e per il ripristino di un file nel filegroup primario è sempre necessario che il database non sia in linea. SQL Server 2005 Enterprise Edition utilizza il ripristino non in linea se il database è già non in linea.

In SQL Server 2005 Enterprise Edition, se il database è in linea durante un ripristino di file, il database rimane in linea. Il ripristino e recupero di un file quando il database è in linea viene definito ripristino del file in linea.

Sono disponibili gli scenari di ripristino seguenti:

  • Ripristino di file non in linea
    In un ripristino del file non in linea i file o i filegroup danneggiati vengono ripristinati quando il database non è in linea. Al termine della sequenza di ripristino, il database torna in linea.

  • Ripristino di file in linea
    In SQL Server 2005 Enterprise Edition il ripristino di file viene eseguito automaticamente in linea quando il database è in linea. I filegroup contenenti file in fase di ripristino, invece, non sono in linea. Al termine del recupero di tutti i file del filegroup non in linea, viene attivata automaticamente la modalità in linea per il filegroup. Per ulteriori informazioni sui ripristini in linea, vedere Esecuzione di ripristini in linea.

    [!NOTA] È possibile eseguire query e aggiornamenti solo nei filegroup in linea. Se si tenta di accedere a un filegroup non in linea, incluso un filegroup contenente un file in fase di ripristino o di recupero, verrà generato un errore.

Se il filegroup in fase di ripristino è di lettura/scrittura, è necessario applicare una catena non interrotta di backup del log dopo il ripristino degli ultimi dati o del backup differenziale per portare il filegroup fino ai record di log inclusi nei record di log attivi correnti del file di log. Il punto di ripristino si trova in genere, ma non necessariamente, verso la fine del log.

Se il filegroup in fase di ripristino è di sola lettura, l'applicazione di backup del log in genere non è necessaria e viene ignorata. Se il backup è stato creato dopo l'impostazione del file in modalità di sola lettura, esso verrà ripristinato per ultimo. Il rollforward viene interrotto in corrispondenza del punto di destinazione.

Ripristino di file o filegroup

Per ripristinare uno o più file danneggiati da backup dei file e backup differenziali dei file

  1. Creare un backup della parte finale del log delle transazioni attivo.

    Se l'operazione è impossibile poiché il log è stato danneggiato, sarà necessario ripristinare l'intero database. Per informazioni sul backup di un log delle transazioni, vedere Creazione di backup del log delle transazioni.

    ms190710.note(it-it,SQL.90).gifImportante:
    Per un ripristino di file non in linea, è sempre necessario creare un backup della parte finale del log prima del ripristino del file. Per un ripristino di file in linea, è sempre necessario creare il backup del log dopo il ripristino del file per fare in modo che il file recuperato si trovi in uno stato consistente con il resto del database.
  2. Ripristinare ogni file danneggiato dal backup del file più recente.

  3. Ripristinare l'eventuale backup differenziale del file più recente per ogni file ripristinato.

  4. Ripristinare i backup del log delle transazioni in sequenza, iniziando con il backup associato al file ripristinato meno recente e terminando con il backup della parte finale del log creato nel passaggio 1.

    È necessario ripristinare tutti i backup del log delle transazioni creati successivamente ai backup di file per assicurare la consistenza del database. Il rollforward dei backup del log delle transazioni è un'operazione rapida, in quanto vengono applicate soltanto le modifiche valide per i file ripristinati. Il ripristino di singoli file può offrire risultati migliori rispetto al ripristino dell'intero database poiché i file non danneggiati non vengono copiati e non ne viene eseguito il rollforward. Deve comunque essere letta l'intera catena dei backup di log.

  5. Recuperare il database.

[!NOTA] I backup dei file possono essere utilizzati per ripristinare il database a una temporizzazione precedente. A tale scopo, è necessario ripristinare un set completo di backup dei file e quindi ripristinare i backup del log delle transazioni in sequenza, fino a raggiungere un punto nel tempo successivo al backup di file più recente ripristinato. Per ulteriori informazioni sul recupero temporizzato, vedere Ripristino di un database fino a un punto all'interno di un backup.

Ripristino di file e filegroup

Argomenti avanzati

Sequenza di ripristino Transact-SQL per il ripristino di file non in linea (modello di recupero con registrazione completa)

Uno scenario di ripristino di file consiste in un'unica sequenza di ripristino in cui vengono eseguiti la copia, il rollforward e il recupero dei dati appropriati.

Il codice Transact-SQL seguente mostra le opzioni RESTORE critiche in una sequenza di ripristino per lo scenario del ripristino di file. La sintassi e i dettagli non rilevanti verranno omessi.

In questo esempio viene illustrato un ripristino non in linea di due file secondari, A e B, con NORECOVERY. Successivamente vengono applicati due backup del log con NORECOVERY, seguiti dal backup della parte finale del log, che viene ripristinato con RECOVERY. Questo esempio inizia con l'impostazione del file come non in linea per eseguire un ripristino di file non in linea.

--Take the file offline.
ALTER DATABASE database_name MODIFY FILE SET OFFLINE
-- Back up the currently active transaction log.
BACKUP LOG database_name
   TO <tail_log_backup>
   WITH NORECOVERY
GO 
-- Restore the files.
RESTORE DATABASE database_name FILE=<name> 
   FROM <file_backup_of_file_A> 
   WITH NORECOVERY
RESTORE DATABASE database_name FILE=<name> ......
   FROM <file_backup_of_file_B> 
   WITH NORECOVERY
-- Restore the log backups.
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup> 
   WITH RECOVERY

Esempi

Vedere anche

Concetti

Backup differenziali e nuovi file
Posizionamento di indici in filegroup
Backup differenziali del file
Informazioni sul funzionamento dei processi di ripristino e recupero dei backup in SQL Server
Utilizzo di file e filegroup per la gestione dell'aumento delle dimensioni del database
Utilizzo di file e filegroup
Applicazione dei backup del log delle transazioni
Panoramica del backup (SQL Server)
Panoramica del ripristino e del recupero in SQL Server

Altre risorse

Progettazione di file e filegroup
Considerazioni sul backup e il ripristino per funzionalità correlate
RESTORE (Transact-SQL)
Ripristino di un database fino a un punto all'interno di un backup
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

Contenuto modificato:
  • Inserimento dell'introduzione al ripristino di file tratta dall'argomento precedentemente intitolato "Scenari di ripristino con il modello di recupero con registrazione completa".