Summary: Questo blog illustra le cause comuni del problema "database di SQL Server bloccato in modalità di ripristino". Inoltre, descrive come risolvere il problema. Se il processo di recupero non riesce a portare il database online, provate a utilizzare uno strumento di recupero SQL per riottenere l'accesso al database, senza tempi di inattività prolungati.
Quando si riavvia SQL Server o i servizi dopo l’arresto del database SQL, l’arresto del server o il danneggiamento del database, il database passa automaticamente allo stato di “recupero“. Il database diventa online dopo il completamento del processo di recupero. Tuttavia, se il database impiega troppo tempo a ripristinarsi, è importante sapere perché il database è bloccato nel recupero.
Cosa causa il blocco del database di SQL Server in modalità di recupero?
È possibile controllare il registro degli errori di SQL Server per conoscere la causa del problema del database bloccato in modalità RECOVERY. Le cause più comuni del problema sono:
- È possibile che si stia ripristinando il database da backup completi, differenziali e di registro con l’opzione NORECOVERY attivata, ma che RECOVERY non sia stato specificato durante l’ultimo ripristino.
- Secondo MSDN, il registro delle transazioni può riempirsi quando un database è in fase di recupero. SQL Server interrompe tutte le transazioni in esecuzione fino a quando non viene liberata la memoria del registro, rallentando il recupero del database. Anche la presenza di più file di registro virtuali (VLF) in un registro delle transazioni può rallentare il processo di recupero.
- Il processo di recupero potrebbe interrompersi se il database è danneggiato o presenta qualche tipo di corruzione.
Risoluzione del problema “Database SQL Server in modalità di recupero”.
Di seguito sono riportati alcuni semplici suggerimenti per risolvere il problema del database di SQL Server in modalità di recupero:
Suggerimento 1 – Ripristino del database con RECOVERY
Nota: l’esecuzione di “Ripristino con ripristino” farà ripetere al database le stesse fasi di ripristino. Evitate questa opzione se avete un database di grandi dimensioni.
Eseguire la seguente query per riportare il database online:
RESTORE DATABASE db_name CON RECUPERO; |
La query eseguirà il rollback di tutte le transazioni non impegnate e farà uscire il database dalla modalità di recupero.
Suggerimento 2 – Applicare le correzioni Microsoft
Se il numero di VLF all’interno del registro delle transazioni è eccessivo e il ripristino del database è lento, l’applicazione delle correzioni Microsoft può essere d’aiuto.
Suggerimento 3 – Eseguire DBCC CHECKDB per determinare la corruzione del database
Eseguite DBCC CHECKDB sul database problematico. Se vengono segnalati errori di coerenza, è necessario riparare il database utilizzando l’opzione di riparazione di livello minimo. Per ulteriori informazioni, leggete qui: Per saperne di più
Se questi suggerimenti per la risoluzione dei problemi non funzionano, provare a risolvere il problema utilizzando le soluzioni descritte nella sezione successiva.
Soluzioni per risolvere il problema del database SQL Server in modalità di recupero
Di seguito sono riportate due soluzioni per risolvere il problema:
Soluzione 1 – Ripristinare il database dal backup più recente
Nota: passare alla soluzione successiva se il backup è obsoleto o corrotto.
Se il processo di ripristino del database sembra bloccato da tempo, provate a ripristinare il database da una copia di backup aggiornata. Per farlo, seguite questi passaggi:
- Aprite SQL Server Management Studio (SSMS), fate clic con il pulsante destro del mouse su Database e fate clic su Ripristina database.
- Nella sezione Sorgente, selezionare l’opzione Dispositivo e fare clic sul pulsante accanto.
- Nella finestra di dialogo che si apre, premere Aggiungi.
- Individuare e selezionare il file di backup (.bak) che si desidera ripristinare, quindi premere OK.
- Fare nuovamente clic su OK.
- Nella schermata Ripristina database, inserire il nome del database che si desidera ripristinare e fare clic su OK.
- Il database verrà ripristinato.
Nota: Il ripristino di un database di grandi dimensioni contenente più tabelle può richiedere molto tempo.
Soluzione 2 – Utilizzare uno strumento professionale per il recupero dei database SQL
Se il backup non è disponibile o se si desidera ripristinare rapidamente il database, l’uso di uno strumento di recupero SQL, come Stellar Repair for MS SQL, può essere utile. Il software ripara i file .mdf/.ndf e ripristina il database nella sua forma originale.
Guardate questo video per capire come funziona il software:
Conclusione
In questo articolo abbiamo discusso del fatto che il database SQL è bloccato nello stato di ‘Recupero’. Ha anche delineato le cause comuni del problema del database SQL Server in modalità di recupero e i suggerimenti per la risoluzione dei problemi. Se questi suggerimenti non dovessero essere utili, l’implementazione delle soluzioni può aiutare a riportare il database in uno stato coerente. Uno strumento di recupero del database SQL può essere utile quando tutto il resto non riesce a ripristinare il database.