Risposta agli errori di ripristino di SQL Server provocati da backup danneggiati

Se i supporti di backup sono danneggiati, si verificano errori di ripristino. Questi errori possono essere segnalati dal sistema operativo o rilevati dai valori di checksum. In entrambi i casi, è possibile procedere in tre modi:

  • Risolvere l'errore e riavviare l'operazione di ripristino.

  • Consentire il proseguimento del ripristino nonostante gli errori e correggere il database dopo il completamento del ripristino.

  • Annullare l'operazione di ripristino e utilizzare un piano di ripristino alternativo che consenta di evitare l'uso del backup danneggiato.

[!NOTA]

Il set di supporti o di backup deve contenere informazioni corrette sufficienti per essere interpretato come set MTF (Microsoft Tape Format). In caso contrario, il ripristino viene interrotto con l'indicazione che il formato del backup non è valido.

Risoluzione dell'errore e riavvio dell'operazione di ripristino

Per risolvere gli errori, procedere nei modi seguenti:

  • Se si è verificato un errore su un dispositivo nastro, è possibile pulire o sostituire l'unità nastro.

  • Per i dispositivi disco, è possibile risolvere l'errore del dispositivo e sostituire il file danneggiato.

  • Se si tratta di un set di supporti con mirroring, è possibile sostituire i supporti danneggiati con i supporti corrispondenti da un altro mirror.

Proseguimento nonostante gli errori

Nota di attenzioneAttenzione

Se si specifica WITH CONTINUE_AFTER_ERROR in un'istruzione RESTORE, viene tentato il ripristino del database. Il ripristino di un database, tuttavia, può essere impedito da diversi tipi di danneggiamenti. È consigliabile utilizzare l'opzione CONTINUE_AFTER_ERROR solo se non rimangono alternative.

L'opzione CONTINUE_AFTER_ERROR determina la prosecuzione di un'operazione di ripristino a prescindere dagli errori, per ripristinare quanto possibile. Viene eseguito il rollforward ed è possibile applicare i successivi backup del log delle transazioni. Se durante il rollforward viene rilevato un errore che impedisce di proseguire fino al punto nel tempo previsto, l'errore viene registrato nel log. Al punto di recupero viene attivata la modalità in linea per il database, se possibile. Se invece è impossibile completare il recupero, il database rimane non in linea.

La quantità di dati perduti dipende dall'errore. Ad esempio, un errore nel checksum di una pagina rende quella sola pagina dubbia e non pregiudica il proseguimento della lettura e dell'elaborazione del supporto. Un errore di I/O di un dispositivo nastro, al contrario, può impedire la lettura, e dunque il ripristino, oltre il punto dell'errore.

Quando si imposta la prosecuzione del ripristino anche in caso di errori, le pagine in cui la verifica non riesce vengono scritte su disco e registrate nella tabella suspect_pages e nel log degli errori.

Procedure consigliate:  Dopo aver utilizzato l'opzione WITH CONTINUE_AFTER_ERROR per il ripristino dei dati, esaminare i log degli errori per ottenere informazioni dettagliate sugli errori. Inoltre, salvare e analizzare tutti i messaggi ottenuti direttamente dall'istruzione RESTORE.

Per proseguire nonostante la presenza di errori

La sintassi di base per RESTORE è la seguente:

RESTORE DATABASE database_name FROM backup_device WITH CONTINUE_AFTER_ERROR, [ NORECOVERY ]

Gestione del database non in linea

Al termine di una sequenza di ripristino eseguita a prescindere dagli errori, può essere possibile correggere il database con DBCC CHECKDB. Affinché CHECKDB venga eseguito in modo consistente dopo l'utilizzo di RESTORE CONTINUE_AFTER_ERROR, è consigliabile utilizzare l'opzione WITH TABLOCK nel comando DBCC CHECKDB. Per ulteriori informazioni, vedere DBCC CHECKDB (Transact-SQL). Sono disponibili tutte le opzioni di correzione. Per conoscere il livello di correzione minimo necessario, eseguire DBCC CHECKDB senza opzioni di correzione. Si noti che, in casi estremi, le informazioni disponibili possono essere insufficienti per la correzione del database.

Per ottenere accesso limitato ai dati così come sono, è possibile attivare la modalità di emergenza per il database utilizzando l'opzione EMERGENCY del comando ALTER DATABASE.