Database del server SQL bloccati nello stato di ripristino


79

Ho un server Sharepoint. Abbiamo avuto un problema con il nostro strumento di backup e ora alcuni dei miei database sono bloccati in stato di ripristino!

Immagine che mostra il ripristino dei database

È possibile interrompere il processo di ripristino? e inoltre, come posso assicurarmi che l'integrità del database non sia stata compromessa?

Risposte:


129

Ciò è probabilmente causato dallo script di ripristino che aggiunge il WITH NORECOVERYparametro, per rendere il database pronto per un registro delle transazioni da applicare dopo il ripristino.

Il database è ora in attesa dell'ultimo file di registro delle transazioni.

Puoi:

  1. Applicare l'ultimo registro delle transazioni , utilizzando RESTORE LOG database_name FROM backup_device WITH RECOVERY;... o
  2. Ripristinare nuovamente il database, ma questa volta usando ... WITH RECOVERY;... o
  3. Forzare la modalità di ripristino del database eseguendo: RESTORE DATABASE YourDb WITH RECOVERY;

Prima di procedere, assicurati di comprendere le implicazioni di queste opzioni. Si può causare la perdita di dati se non si presta attenzione.

Vedi questo per i dettagli:


Quando quelli non funzionano, vedi dba.stackexchange.com/questions/11175/… - ancora una volta, MOLTE AVVERTENZE DI DOOM se non sai cosa stai facendo e comprendi il pieno rischio di perdita di dati. Ma se sei in un legame con un server non di produzione, hai buoni backup da cui eseguire un nuovo ripristino e puoi permetterti di riavviare SQL su detto server, funziona.
NateJ,

6
"Forza la modalità di ripristino del database eseguendo: RESTORE DATABASE YourDb WITH RECOVERY". 20 minuti di servizi di scratch e riavvio della testa, quindi riparati con un solo liner. Grazie!
Echilon,

2
Ero bloccato con la stessa situazione nella mia scatola di sviluppo. L'opzione 3 ha funzionato come un fascino!
Moiz Tankiwala,

Ho provato a ripristinare un DB da .bak in un nuovo DB, ma ho dimenticato di cambiare i nomi dei file sul disco. Ripristino non riuscito, anche se non perché i file erano in uso da un database esistente, ma qualche altro errore. Ciò ha incasinato il DB esistente (bloccato nello stato di ripristino). # 3 rimettilo online in un secondo e controllando i dati tutto sembra a posto. Grazie!
CoDEmanX,

44

Script T-SQL semplice per risolvere questo problema:

scrivere questo script nella finestra Nuova query ed eseguire:

RESTORE DATABASE [DataBase Name] WITH RECOVERY;

RIPRISTINA DATABASE [nome_database] CON RECUPERO .... Ha funzionato perfettamente per me. Grazie!

10
Fai molta attenzione a comprenderne le implicazioni. Se il DB è in attesa di un ripristino del registro, ciò potrebbe comportare una notevole perdita di dati.
David Spillett,

2
Non funziona a causa di un errore, "Impossibile ripristinare il database perché il registro non è stato ripristinato."
Ian Boyd,

0

Ho appena avuto questa situazione e la cura è stata abbastanza sorprendente:

ALTER DATABASE DBName SET ONLINE;

Apparentemente il ripristino di NetBackup che si è rotto lo ha lasciato in uno stato strano. Nessun'altra soluzione ha funzionato (anche se non avevo ancora provato a riavviare il servizio SQL Server)

Starei attento con il database, tuttavia, poiché teoricamente una volta avviato un ripristino, quindi non riesce, potresti avere dati danneggiati. Ho intenzione di ripristinare nuovamente il database comunque, quindi non mi interessa.


Questa è la risposta errata a questa domanda, se si tenta di impostare un database in "Ripristino" online, verrà visualizzato l'errore "ALTER DATABASE non è consentito mentre un database si trova nello stato Ripristino".
James Jenkins,

Forse non hai familiarità con come su StackOverflow, a volte rispondiamo a domande leggermente diverse da quella pubblicata. Questo fornisce valore perché le persone spesso arrivano a domande simili alle loro dopo aver cercato online. Per quanto riguarda la tua affermazione fattuale sul fatto di ALTER DATABASEnon essere autorizzato, ti assicuro che nel mio caso, il database stava effettivamente mostrando come in stato di ripristino e l'utilizzo SET ONLINEin realtà ha funzionato . Quindi renditi conto che mi stai chiamando errato o mentendo. È quello che devi veramente fare quando è disponibile un'alternativa?
ErikE

@JamesJenkins E qual è questa alternativa? L'alternativa è l'ipotesi che un database potrebbe mostrare durante il ripristino dello stato ma in realtà non sta ripristinando. Oppure potrebbe essere nella fase finale del ripristino, con il ripristino effettivamente completato in modo che possa effettivamente essere impostato sullo ONLINEstato. Per farla breve, penso che il tuo commento e il tuo voto negativo siano fuori linea per questo sito e le tue informazioni sono effettivamente errate perché non sono adeguatamente qualificate con i dati che ho presentato.
ErikE

0

Come sappiamo, l'opzione di ripristino del database predefinita è con Ripristino che garantisce che il database sia disponibile e online per l'uso dopo il completamento del ripristino del database.

Esempio:

RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO

Vediamo i punti importanti su Restore with NO Recovery

  • Il database non è utilizzabile
  • Rimane in modalità di ripristino
  • È possibile eseguire la sequenza di ripristino successiva
  • Non esegue il rollback di alcuna transazione senza commit

Ripristina con NoRecovery

Questa opzione viene utilizzata in particolare quando è necessario ripristinare più backup. Ciò significa che quando si esegue il comando di ripristino con l'opzione norecovery significa che il database non viene rilasciato agli utenti fino al ripristino dell'ultimo backup in sequenza. Con l'ultimo backup, viene utilizzata l'opzione di ripristino e il database diventa online.

Esempio:

RESTORE DATABASE YourDB FROM DISK - 'C:\\Data\\Backup_part1.bak' 
WITH NORECOVERY
GO

E poi:

RESTORE LOG YourDB FROM DISK = 'C:\\Data\\BackupLog-part2.trn'
WITH RECOVERY
GO

1
Potresti avere un refuso nella tua risposta. La sezione contrassegnata ... su Ripristina con ripristino elenca tutte le opzioni che si applicano RESTORE ...WITH NORECOVERYall'opzione. Potresti ricontrollarlo?
hot2use,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.