Panoramica del ripristino e del ripristino (SQL Server)
Si applica a:SQL Server
Per ripristinare un database di SQL Server da un errore, un amministratore del database deve ripristinare un set di backup di SQL Server in una sequenza di ripristino logicamente corretta e significativa. Il ripristino e il ripristino di SQL Server supportano il ripristino di dati da backup di un intero database, di un file di dati o di una pagina di dati, come indicato di seguito:
Database ( ripristino di database completo)
L'intero database viene ripristinato e ripristinato e il database è offline durante le operazioni di ripristino e ripristino.
File di dati ( ripristino del file)
Un file di dati o un set di file viene ripristinato e recuperato. Durante un ripristino di file, i filegroup che contengono i file vengono automaticamente offline durante il ripristino. Qualsiasi tentativo di accedere a un filegroup offline provoca un errore.
Pagina di dati ( ripristino di pagina)
Nel modello di recupero con registrazione completa o nel modello di recupero con registrazione minima delle operazioni bulk è possibile ripristinare singole pagine. Le operazioni di ripristino della pagina possono essere effettuate in qualsiasi database, indipendentemente dal numero di filegroup.
Il backup e il ripristino di SQL Server funzionano in tutti i sistemi operativi supportati. Per informazioni sui sistemi operativi supportati, vedere Requisiti hardware e software per l'installazione di SQL Server 2016. Per informazioni sul supporto per i backup delle versioni precedenti di SQL Server, vedere la sezione "Supporto per la compatibilità" di RESTORE (Transact-SQL).
Panoramica degli scenari di ripristino
Uno scenario di ripristino in SQL Server è il processo di ripristino dei dati da uno o più backup e quindi il ripristino del database. Gli scenari di ripristino supportati dipendono dal modello di recupero del database e dall'edizione di SQL Server.
Nella tabella seguente vengono descritti i possibili scenari di ripristino supportati per modelli di recupero diversi.
scenario di ripristino | Nel modello di recupero con registrazione minima | Nel modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk |
---|---|---|
ripristino di database completo | Si tratta della strategia di ripristino standard. Un ripristino di database completo può comportare semplicemente il ripristino e il recupero di un backup completo del database. In alternativa, tale tipo di ripristino può comportare il ripristino di un backup completo del database seguito dal ripristino e dal recupero di un backup differenziale. Per altre informazioni, vedere Ripristini completi del database (modello di recupero con registrazione minima). |
Si tratta della strategia di ripristino standard. Un ripristino di database completo comporta il ripristino di un backup completo del database e, facoltativamente, di un backup differenziale, se disponibile, seguito dal ripristino di tutti i successivi backup del log, in sequenza. Il ripristino di database completo viene completato tramite il recupero dell'ultimo backup del log e il suo ripristino (RESTORE WITH RECOVERY). Per altre informazioni, vedere Ripristini completi del database (modello di recupero con registrazione completa) |
Ripristino file 1 | Consente di ripristinare uno o più file di sola lettura danneggiati senza ripristinare l'intero database. È disponibile solo se il database contiene almeno un filegroup di sola lettura. | Consente di ripristinare uno o più file, senza ripristinare l'intero database. Il ripristino dei file può essere eseguito mentre il database è offline o, per alcune edizioni di SQL Server, mentre il database rimane online. Durante un'operazione di ripristino del file, i filegroup che includono i file che vengono ripristinati sono sempre offline. |
Ripristino di pagine | Non applicabile | Consente di ripristinare una o più pagine danneggiate. È possibile eseguire il ripristino delle pagine mentre il database è offline o, per alcune edizioni di SQL Server, mentre il database rimane online. Durante un'operazione di ripristino della pagina, le pagine che vengono ripristinate sono sempre offline. Perché la pagina sia aggiornata rispetto al file di log corrente, è necessario che sia disponibile una catena non interrotta di backup del log, fino al file di log corrente, e che i backup vengano tutti applicati. Per altre informazioni, vedere Ripristinare pagine (SQL Server).For more information, see Restore Pages (SQL Server). |
Ripristino a fasi 1 | Consente di ripristinare e recuperare il database in varie fasi a livello di filegroup, partendo dal filegroup primario e da tutti i filegroup secondari di lettura/scrittura. | Consente di ripristinare e recuperare il database in varie fasi a livello di filegroup, partendo dal filegroup primario. Per altre informazioni, vedere Ripristini a fasi (SQL Server) |
1 Il ripristino online è supportato solo in Enterprise Edition.
Passaggi per ripristinare un database
Per eseguire un ripristino di file, il motore di database esegue due passaggi:
Crea eventuali file di database mancanti.
Copia i dati dai dispositivi di backup nei file di database.
Per eseguire un ripristino del database, il motore di database esegue tre passaggi:
Crea il database e i file di log delle transazioni, se non esistono già.
Copia tutti i dati, il log e le pagine di indice dai supporti di backup di un database nei file del database.
Applica il log delle transazioni, in quello che è noto come processo di ripristino.
Indipendentemente dalla modalità di ripristino dei dati, prima che un database possa essere recuperato, il motore di database di SQL Server garantisce che l'intero database sia coerente logicamente. Ad esempio, se si ripristina un file, non è possibile recuperarlo e portarlo online fino a quando non è stato eseguito il rollforward abbastanza avanti per essere coerente con il database.
Vantaggi di un ripristino di file o pagine
Il ripristino e il recupero di file o pagine, anziché dell'intero database, offrono i vantaggi seguenti:
Il ripristino di una quantità minore di dati consente di ridurre il tempo necessario per la copia e il recupero.
In SQL Server il ripristino di file o pagine potrebbe consentire ad altri dati nel database di rimanere online durante l'operazione di ripristino.
Ripristino e log delle transazioni
Per la maggior parte degli scenari di ripristino, è necessario applicare un backup del log delle transazioni e consentire al motore di database di SQL Server di eseguire il processo di ripristino per il database da portare online. Il ripristino è il processo usato da SQL Server per ogni database per l'avvio in uno stato coerente a livello di transazione o pulito.
Se si verifica un errore o una chiusura anomala, è possibile che il database sia in un stato in cui alcune modifiche ai database non siano state scritte dalla cache del buffer ai file di dati e che transazioni incomplete abbiano apportato modifiche al file di dati. Quando viene avviata un'istanza di SQL Server, viene eseguito un ripristino di ogni database, costituito da tre fasi, in base all'ultimo checkpoint del database:
La fase 1 è la fase di analisi che analizza il log delle transazioni per determinare qual è l'ultimo checkpoint e crea la tabella delle pagine dirty (DPT) e la tabella delle transazioni attive (ATT). La tabella delle pagine dirty contiene record di pagine dirty nel momento in cui il database è stato arrestato. ATT contiene i record delle transazioni attive al momento in cui il database non è stato arrestato correttamente.
La fase 2 è la fase di rollforward che esegue il rollforward di tutte le modifiche registrate nel log che potrebbero non essere state scritte nei file di dati al momento dell'arresto del database. Il numero di sequenza del file di log (LSN) (minLSN) necessario per un recupero corretto a livello di database si trova nella tabella delle pagine dirty e contrassegna l'inizio delle operazioni di rollforward necessarie in tutte le pagine dirty. In questa fase, il motore di database di SQL Server scrive su disco tutte le pagine dirty appartenenti alle transazioni di cui è stato eseguito il commit.
La fase 3 è la fase di annullamento che esegue il rollback delle transazioni incomplete trovate in ATT per assicurarsi che l'integrità del database venga mantenuta. Dopo il rollback il database passa nello stato online, dopodiché non è possibile applicare alcun altro backup del log delle transazioni al database.
Le informazioni sullo stato di avanzamento di ogni fase di ripristino del database vengono registrate nel log degli errori di SQL Server. È anche possibile rilevare lo stato di avanzamento del recupero del database usando gli eventi estesi. Per altre informazioni, vedere il post di blog New extended events for database recovery progress (Nuovi eventi estesi per lo stato di avanzamento del recupero del database).
Nota
In uno scenario di ripristino a fasi, se un filegroup di sola lettura è stato tale fin da prima della creazione del backup del file, l'applicazione dei backup del log al filegroup non è necessaria e non viene eseguita dal ripristino del file.
Nota
Per ottimizzare la disponibilità dei database in un ambiente aziendale dopo l'avvio del servizio SQL Server, ad esempio dopo un failover di un'istanza del cluster di failover AlwaysOn o il riavvio sul posto, SQL Server Enterprise Edition può portare online un database dopo la fase di rollforward, mentre la fase di annullamento è ancora in esecuzione. Questo processo è noto come recupero rapido.
Tuttavia, Il ripristino rapido non è disponibile quando il database passa a uno stato online, ma il servizio SQL Server non è stato riavviato. Ad esempio, l'esecuzione ALTER DATABASE AdventureWorks SET ONLINE;
non consentirà al database di essere in stato di lettura/scrittura fino al completamento di tutte e tre le fasi di ripristino.
Modelli di ripristino e operazioni di ripristino supportate
Le operazioni di ripristino disponibili per un database variano in base al relativo modello di recupero. Nella tabella seguente vengono riepilogati i casi e la misura in cui ognuno dei modelli di recupero supporta uno scenario di ripristino specifico.
Operazione di ripristino | Modello di recupero con registrazione completa | Modello di recupero con registrazione minima delle operazioni bulk | Modello di recupero con registrazione minima |
---|---|---|---|
Recupero dati | Recupero completo (se il log è disponibile). | Rischio parziale di perdita di dati. | Tutti i dati successivi all'ultimo backup completo o differenziale vanno perduti. |
Ripristino temporizzato | Qualsiasi periodo di tempo coperto dai backup del log. | Non consentito se il backup del log contiene modifiche con registrazione minima delle operazioni bulk. | Non supportato. |
Ripristino file 1 | Supporto completo. | A volte.2 | Disponibile solo per i file secondari di sola lettura. |
Ripristino pagina 1 | Supporto completo. | A volte.2 | Nessuno. |
Ripristino a fasi (a livello di filegroup) 1 | Supporto completo. | A volte.2 | Disponibile solo per i file secondari di sola lettura. |
1 Disponibile solo nell'edizione Enterprise di SQL Server
2 Per le condizioni necessarie, vedere Restrizioni di ripristino nel modello di recupero con registrazione minima, più avanti in questo articolo.
Importante
Indipendentemente dal modello di recupero di un database, non è possibile ripristinare un backup di SQL Server in una versione del motore di database di SQL Server precedente alla versione che ha creato il backup.
Scenari di ripristino nel modello di recupero con registrazione minima
Il modello di recupero con registrazione minima impone le restrizioni seguenti sulle operazioni di ripristino:
Il ripristino del file e il ripristino a fasi sono disponibili solo per gruppi di file secondari in modalità di sola lettura. Per informazioni su questi scenari di ripristino, vedere Ripristini di file (modello di recupero con registrazione minima) e ripristini a fasi (SQL Server).
Il ripristino della pagina non è consentito.
Il ripristino temporizzato non è consentito.
Se una o più di queste restrizioni non sono appropriate per le proprie esigenze di recupero, valutare se utilizzare il modello di recupero con registrazione completa. Per altre informazioni, vedere Panoramica del backup (SQL Server).
Importante
Indipendentemente dal modello di recupero di un database, un backup di SQL Server non può essere ripristinato da una versione di SQL Server precedente alla versione che ha creato il backup.
Eseguire il ripristino nel modello di recupero con registrazione minima delle operazioni bulk
In questa sezione vengono fornite informazioni sul ripristino proprie del modello di recupero con registrazione minima delle operazioni bulk da intendersi esclusivamente come integrazione del modello di recupero con registrazione completa.
Nota
Per un'introduzione al modello di recupero con registrazione minima delle operazioni bulk, vedere Log delle transazioni (SQL Server).
In linea generale, il modello di recupero con registrazione minima delle operazioni bulk è simile al modello di recupero con registrazione completa e le informazioni fornite per quest'ultimo si applicano a entrambi. Tuttavia, il recupero temporizzato e il ripristino in linea sono influenzati dal modello di recupero con registrazione minima delle operazioni bulk.
Restrizioni per il ripristino temporizzato
Se un backup del log eseguito nel modello di recupero con registrazione minima delle operazioni bulk contiene modifiche registrate in blocco, il recupero temporizzato non è consentito. Se si tenta di eseguire il recupero temporizzato in un backup del log che contiene modifiche con registrazione minima delle operazioni bulk, l'operazione di ripristino non verrà eseguita correttamente.
Restrizioni per il ripristino online
Una sequenza di ripristino in linea funziona solo se vengono soddisfatte le condizioni seguenti:
Tutti i backup del log necessari devono essere eseguiti prima dell'avvio della sequenza di ripristino.
È necessario eseguire un backup delle modifiche bulk prima di avviare la sequenza del ripristino online.
Se nel database sono presenti modifiche bulk, tutti i file devono essere online o inattivi. Questo significa che non è più parte del database.
Se queste condizioni non vengono soddisfatte, la sequenza di ripristino online ha esito negativo.
Nota
È consigliabile passare al modello di recupero con registrazione completa prima di avviare un ripristino online. Per altre informazioni, vedere Modelli di recupero (SQL Server).
Per informazioni su come eseguire un ripristino online, vedere Ripristino online (SQL Server).
Database Recovery Advisor (SQL Server Management Studio)
Tramite Database Recovery Advisor viene semplificata la costruzione di piani di ripristino mediante i quali vengono implementate ottime sequenze di ripristino corrette. Molti problemi noti di ripristino del database sono stati risolti e sono stati apportati molti miglioramenti richiesti dai clienti. Di seguito sono riportati i miglioramenti principali introdotti da Database Recovery Advisor:
Algoritmo del piano di ripristino: l'algoritmo utilizzato per costruire i piani di ripristino è stato migliorato in modo significativo, in particolare per gli scenari di ripristino complessi. Molti casi perimetrali, inclusi gli scenari di fork nei ripristini temporizzato, vengono gestiti in modo più efficiente rispetto alle versioni precedenti di SQL Server.
Ripristini temporizzati: tramite Database Recovery Advisor viene notevolmente semplificato il ripristino di un database in un determinato momento. Tramite una cronologia di backup visiva viene migliorato in modo significativo il supporto per i ripristini temporizzati. Tramite questa cronologia visiva è possibile identificare un momento appropriato come punto di recupero di destinazione per il ripristino di un database. Tramite la cronologia viene semplificato l'attraversamento di un percorso di recupero con fork, cioè un percorso che si estende su più fork di recupero. In un piano di ripristino temporizzato specificato sono inclusi automaticamente i backup rilevanti per il ripristino al punto nel tempo previsto (data e ora). Per altre informazioni, vedere Ripristino di un database di SQL Server fino a un punto specifico all'interno di un backup (modello di recupero con registrazione completa).
Per altre informazioni, vedere Database Recovery Advisor, vedere i blog seguenti sulla gestibilità di SQL Server:
Recupero del database accelerato
Il ripristino accelerato del database è disponibile a partire da SQL Server 2019 (15.x) e nel database SQL di Azure. Il ripristino accelerato del database migliora notevolmente la disponibilità del database, soprattutto in presenza di transazioni a esecuzione prolungata, riprogettando il processo di ripristino del motore di database di SQL Server. Un database in cui è abilitato il ripristino accelerato del database completa il processo di recupero in modo considerevolmente più veloce dopo un failover o una chiusura anomala. Se abilitato, il ripristino accelerato del database completa anche il rollback delle transazioni con esecuzione prolungata annullate in modo significativamente più veloce.
È possibile abilitare il ripristino accelerato del database per database in SQL Server 2019 (15.x) usando la sintassi seguente:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Nota
Il ripristino accelerato del database è abilitato per impostazione predefinita nel database SQL di Azure.