Database in Recovery Pending

La modalità “Ripristino in sospeso” indica che il database non può avviare il processo di ripristino in caso di arresto anomalo del sistema. Ciò è dovuto al fatto che SQL Server non è in grado di accedere alla pagina di avvio nel file di dati primario (MDF) per determinare se è necessario un ripristino in caso di arresto anomalo del sistema ma non è stato possibile avviare il processo di ripristino (ad esempio, perché il file di registro delle transazioni è mancante o danneggiato).


Altre cause possono essere lo spazio di archiviazione su disco o memoria insufficiente, o il danneggiamento file MDF a causa di molti motivi come problemi del sottosistema del disco, problemi della piattaforma, guasto hardware, attacco di virus e così via.


Nel caso in cui il ripristino del database non può essere avviato a causa di spazio di archiviazione su disco insufficiente bisogna innanzitutto, aumenta lo spazio su disco, dopodiché impostare il database in modalità “Online” ed eseguire il comando CheckDB.

ALTER DATABASE [DBNAME] SET ONLINE;
DBCC CHECKDB(‘DBNAME’) WITH NO_INFOMSGS;

Questa immagine ha l'attributo alt vuoto; il nome del file è CHECKDB.jpg

Nel caso in cui il log degli errori mostri che il database non è stato ripristinato correttamente a causa di un file di registro mancante del database che potrebbe essere eliminato, rinominato o danneggiato, metti il database in modalità di emergenza, poi scollega il database (metti in modalità OFFLINE) dopodiché allegalo di nuovo (portalo online).


I comandi da eseguire sono i seguenti:

ALTER DATABASE [DBNAME] SET EMERGENCY;
ALTER DATABASE [DBNAME] set multi_user;
EXEC sp_detach_db ‘DBNAME’;
EXEC sp_attach_single_file_db @DBName = ‘DBNAME’, @physname = N’MDF_FILE_FULL_PATCH’;

Questa immagine ha l'attributo alt vuoto; il nome del file è EMERGENCY.jpg

In alcuni casi è possibile risolvere errori di database utilizzando le opzioni Repair, ma solo come ultima risorsa.
Microsoft consiglia sempre un ripristino utente dall’ultimo backup valido noto come metodo principale per il ripristino da errori segnalati da DBCC CHECKDB.