Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Le informazioni in questo argomento sono rilevanti solo per i database che contengono più file o filegroup e che utilizzano il modello di recupero completo o di caricamento bulk.
L'obiettivo di un ripristino di file consiste nel ripristinare uno o più file danneggiati senza ripristinare l'intero database. 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.
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 Questo porta il filegroup avanti fino ai record di log attivi attuali nel file di log. Il punto di recupero 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. L'avanzamento viene fermato al punto di destinazione.
Gli scenari di ripristino dei file sono i seguenti:
Ripristino di file offline
In un ripristino di file offline, i file o i filegroup danneggiati vengono ripristinati mentre il database è offline. Al termine della sequenza di ripristino, il database torna online.
Tutte le edizioni di SQL Server supportano il ripristino di file offline.
Ripristino di file online
In un ripristino di file offline, se il database è online al momento del ripristino, rimarrà online durante il ripristino del file. Tuttavia, durante l'operazione di ripristino, ogni filegroup nel quale viene ripristinato un file rimane offline. Al termine del recupero di tutti i file del filegroup offline, viene attivata automaticamente la modalità online per il filegroup.
Per informazioni sul supporto per il ripristino di pagine e file online, vedere Edizioni e funzionalità supportate per SQL Server 2022. Per altre informazioni sui ripristini in linea, vedere Ripristino in linea (SQL Server).
Suggerimento
Se si desidera attivare la modalità offline per il database al fine di eseguire un ripristino di file, attivare la modalità offline per il database prima di avviare la sequenza di ripristino eseguendo la seguente istruzione ALTER DATABASE : ALTER DATABASE nome_database SET OFFLINE.
Ripristino di file danneggiati da backup di file
Prima di ripristinare uno o più file danneggiati, tentare di creare un backup della parte finale del log.
Se il log è stato danneggiato e non è possibile creare un backup della parte finale del log, è necessario ripristinare l'intero database.
Per informazioni sul backup di un log delle transazioni, vedere Backup di log delle transazioni (SQL Server).
Importante
Per un ripristino di file offline, è sempre necessario creare un backup della parte finale del log prima del ripristino del file. Per un ripristino di file online, è sempre necessario creare il backup del log dopo il ripristino del file Questo backup del log è necessario per consentire che il file recuperato si trovi in uno stato consistente con il resto del database.
Ripristinare ogni file danneggiato dal backup più recente di quel file.
Ripristinare l'eventuale backup differenziale del file più recente per ogni file ripristinato.
Ripristinare i backup del log delle transazioni in sequenza, iniziando con il backup che copre il file ripristinato più vecchio e terminando con il backup del log finale 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.
Recuperare il database.
Nota
I backup dei file possono essere utilizzati per ripristinare il database a una temporizzazione precedente. Per fare ciò, è necessario ripristinare l'intero set di backup dei file e quindi ripristinare i backup del log delle transazioni in sequenza fino a raggiungere un punto successivo al backup di file più recente ripristinato. Per ulteriori informazioni sul recupero al punto nel tempo, vedere Ripristinare un database di SQL Server a un punto nel tempo (modello di recupero completo).
Sequenza di ripristino Transact-SQL per il ripristino di file offline (modello di recupero completo)
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.
In questa sezione vengono illustrate le opzioni RESTORE essenziali per una sequenza di ripristino di file. La sintassi e i dettagli non rilevanti sono stati omessi.
Nella sequenza di ripristino dell'esempio seguente viene illustrato un ripristino offline di due file secondari, A
e B
mediante WITH NORECOVERY. Successivamente vengono applicati due backup del log con NORECOVERY, seguiti dal backup della parte finale del log, che viene ripristinato con WITH RECOVERY.
Nota
La sequenza di ripristino dell'esempio seguente inizia portando il file offline e quindi creando un backup della parte finale del log.
--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
Esempio: Ripristino online di un file leggibile/scrivibile (modello di recupero completo)
Esempio: Ripristino online di un file di sola lettura (modello di recupero completo)
Attività correlate
Per ripristinare file e filegroup
SqlRestore (SMO)
Vedi anche
Backup e ripristino: interoperabilità e coesistenza (SQL Server)
Backup differenziali (SQL Server)
Backup completi dei file (SQL Server)
Panoramica del backup (SQL Server)
Panoramica del ripristino e del recupero (SQL Server)
RESTORE (Transact-SQL)
Ripristini di database completi (modello di recupero semplice)
Ripristini parziali (SQL Server)