Sommario
    Recupero del database di Access

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


    Sommario

      Riassunto: 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:

      • Online – Se uno dei file di dati viene danneggiato durante l’esecuzione di una query o di un’altra operazione, il database rimane online e accessibile.
      • Sospetto – Se un database non può essere ripristinato all’avvio di SQL Server, il database viene contrassegnato come sospetto.
      • Recovery Pending – Se SQL Server sa che è necessario eseguire il ripristino del database ma qualcosa ne impedisce l’avvio, il server contrassegna il database nello stato “Recovery Pending”. Questo stato è diverso da quello di SOSPETTO perché non si può affermare che il recupero stia per fallire, ma semplicemente non è ancora stato avviato.
      Figura 1- Database contrassegnato nello stato "Recovery Pending" (in attesa di recupero)
      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
      Figura 2- Stati

      Motivi dello stato di Recovery Pending in SQL Server

      Alcuni dei motivi che causano questo problema sono:

      • Il database non è stato chiuso correttamente e c’è almeno una transazione non impegnata attiva durante l’arresto, con conseguente cancellazione del file di registro delle transazioni attivo.
      • L’utente ha provato a spostare i file di registro su una nuova unità per risolvere i problemi di prestazioni del server, ma ha finito per corrompere i file di registro durante il processo.
      • Il ripristino del database non può essere avviato a causa dell’insufficienza dello spazio di memoria o dell’archiviazione su disco.

      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

      • Scaricare, installare ed eseguire il software Stellar Repair for MS SQL.
      • Nella finestra Seleziona database, fare clic su Sfoglia o Cerca per selezionare il file di database da riparare.
      Figura 3 - Selezionare il file del database
      Figura 3 – Selezionare il file del database
      • Il software offre l’opzione di scansione standard e avanzata per analizzare il database corrotto.
      Figura 4 - Modalità di scansione
      Figura 4 – Modalità di scansione
      • Fare clic su Ripara per avviare il processo di riparazione.
      • Il software mostra l’anteprima di tutti i componenti del db recuperabili.
      Figura 5: Anteprima degli oggetti del database
      Figura 5: Anteprima degli oggetti del database
      • Per salvare il file riparato e i suoi componenti, fare clic su Salva nel menu File.
      Figura 6: Opzione Salva
      Figura 6: Opzione Salva
      • Dalla finestra Salva database, procedere come segue:
      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 7: Opzioni di autenticazione per la connettività
      • Fare clic su Sfoglia per scegliere la destinazione per il salvataggio del file riparato.
      Figura 8 - Opzioni di salvataggio dei file
      Figura 8 – Opzioni di salvataggio dei file
      • Fare clic su Salva.
      • Quando viene visualizzato il messaggio “Salva completato“, fare clic su OK.
      Figura 9 - Finestra Salva completo
      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

      • Ripara i file corrotti e inaccessibili di MS SQL Database (.mdf e .ndf).
      • Recupera tutti i componenti del database come tabelle, chiavi, indici, trigger, regole e stored procedure, ecc.
      • Recupera i record cancellati.
      • Supporta MS SQL 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 e tutte le versioni inferiori.
      • Il software è apprezzato dagli MVP di Microsoft.

      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:

      • È in grado di risolvere solo i problemi minori del database.
      • Non garantisce il ripristino completo del database.
      • In particolare, l’esecuzione del comando ‘REPAIR_ALLOW_DATA_LOSS’ può eliminare alcuni dati.

      È 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.

      Was this article helpful?

      No NO

      Circa l'autore

      Himanshu Shakya

      Himanshu is a Tech Enthusiast and Blogger at Stellar, with expertise in data recovery solutions and a keen interest in emerging technologies. Fluent in Japanese, he brings a diverse skill set to his role, contributing to global tech conversations. Outside of work, Himanshu enjoys playing chess, sharpening his strategic thinking and problem-solving skills in his spare time.

      Post correlato

      PERCHÉ STELLAR® È LEADER MONDIALE

      Perché scegliere Stellar?

      • 0M+

        Clienti

      • 0+

        Anni di eccellenza

      • 0+

        Ingegneri R&S

      • 0+

        Paesi

      • 0+

        PARTNER

      • 0+

        Premi ricevuti