Come si risolve lo stato di recupero in sospeso nel database di SQL Server?

Summary: questo post illustra i motivi per cui un database (db) viene contrassegnato come in attesa di recupero. Inoltre, descriverà i metodi per risolvere il problema "SQL server in stato di recovery pending". È possibile risolvere il problema eseguendo query in SQL Server Management Studio (SSMS) o utilizzando il software Stellar Repair for MS SQL.

Stati di SQL Server

Un database SQL è considerato danneggiato se uno o più dei suoi file principali si trovano in uno stato incoerente. A seconda della gravità del danno, il database viene contrassegnato con diversi stati. Alcuni di questi stati sono:

Figura 1- Database contrassegnato nello stato “Recovery Pending” (in attesa di recupero)

Vediamo innanzitutto come verificare lo stato attuale del database. 

Come controllare lo stato del database?

 Per verificare lo stato attuale di un db SQL, eseguire la seguente query:

SELEZIONA nome, stato_desc da sys.s VAI

Eseguendo la query si otterrà un risultato simile:

Figura 2- Stati

Motivi dello stato di Recovery Pending in SQL Server

Alcuni dei motivi che causano questo problema sono:

Metodi per risolvere il problema del Recovery Pending in SQL Server

Nota: prima di avviare una qualsiasi delle seguenti procedure di riparazione, assicurarsi di eseguire un backup del db, in modo da avere una copia di sicurezza nel caso in cui qualcosa vada storto.

Metodo 1 – Modi manuali per risolvere il database in stato di attesa

Di seguito sono riportati i due metodi manuali che consentono di riportare SQL in modalità di recupero alla modalità normale:

1. Contrassegnare il database in modalità di emergenza e avviare una riparazione forzata.

La modalità EMERGENZA del database contrassegna il database come SOLO LETTURA, disabilita la registrazione e consente l’accesso solo agli amministratori di sistema. In sostanza, impostando il db in questa modalità si può riportare online il database inaccessibile.

Nota: di solito un database esce automaticamente dalla modalità EMERGENZA. Se avete problemi a ripristinare il database da questa modalità, leggete questo articolo Ripristinare il database SQL dalla modalità di emergenza alla modalità normale.

Una volta aperto il database in modalità EMERGENZA, provate a ripararlo utilizzando il comando DBCC CHECKDB con l’opzione “REPAIR_ALLOW_DATA_LOSS”. A tal fine, aprire SSMS ed eseguire la seguente serie di query:

ALTER DATABASE [DBName] SET EMERGENZA;

VAI

ALTER DATABASE [DBName] set single_user

VAI

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) CON ALL_ERRORMSGS;

VAI

ALTER DATABASE [DBName] set multi_user

VAI

2. Contrassegnare il database in modalità di emergenza, staccare il database principale e riattaccarlo.

Questa soluzione richiede anche di contrassegnare il db in modalità EMERGENZA. Una volta fatto, mettete il database offline (detach) e poi riportatelo online (re-attach). A tale scopo, eseguire la seguente serie di query in SSMS:

ALTER DATABASE [DBName] SET EMERGENZA;

ALTER DATABASE [DBName] set multi_user

EXEC sp_detach_db ‘[DBName]’

EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[percorso mdf]’

La serie di query di cui sopra aiuta il server a sbarazzarsi del registro corrotto e a crearne uno nuovo automaticamente.

Metodo 2 – Utilizzare il software Stellar Repair for MS SQL

Se i metodi sopra descritti non possono aiutare a risolvere il problema del db in stato di attesa di recupero, utilizzare il software Stellar Repair for MS SQL. Il software può aiutarvi a riparare i file di database corrotti e a riportare il database online dallo stato di recupero in sospeso in modo rapido e senza problemi.

Passaggi per l’utilizzo del software Stellar Repair for MS SQL

Figura 3 – Selezionare il file del database
Figura 4 – Modalità di scansione
Figura 5: Anteprima degli oggetti del database
Figura 6: Opzione Salva
  1. Scegliere MDF in Salva con nome.
  2. Selezionate Nuovo database o Database live in Opzione di salvataggio.
  3. Inserite i dettagli richiesti nella sezione Connessione al server tramite autenticazione o Autenticazione SQL Server.
Figura 7: Opzioni di autenticazione per la connettività
Figura 8 – Opzioni di salvataggio dei file
Figura 9 – Finestra Salva completo

Il file riparato verrà salvato nella posizione selezionata.

Nota: per informazioni dettagliate sull’uso del software Stellar Repair for MS SQL, consultare questa guida utente.

Caratteristiche principali di Stellar Repair for MS SQL

Conclusione

Questo post illustra i motivi alla base del problema “db in stato di recovery pending, come ad esempio un database non chiuso in modo pulito, file di database (.mdf o .ndf) corrotti, memoria o spazio su disco insufficienti. Vengono inoltre descritti i metodi per risolvere il problema del Recovery Pending State nel database di SQL Server.

È possibile riparare il database impostandolo sullo stato di emergenza e avviando il processo di riparazione o scollegando e ricollegando il database. Ma queste soluzioni hanno i loro lati negativi:

È possibile superare queste limitazioni utilizzando il software Stellar Repair for MS SQL. Il software aiuta gli utenti di SQL e gli amministratori di database (DBA) a risolvere gravi errori di corruzione del database. Inoltre, garantisce il recupero completo dei componenti del database, preservando l’integrità dei dati.

Related Post

Exit mobile version