SQL Server mostra il database in fase di recupero


23

Oggi, dopo un'interruzione di corrente, un database (con Recovery: completo) mostra "In Recovery" in SSMS. Così:

myDatabase (In recovery) (stato del database: recovery, Shutdown)

Al termine, nel "processo di ripristino" il database mostra il nome myDatabase senza "(In recovery)". Ho pensato che il problema fosse risolto, ma non lo era.

Quando ho avviato l'applicazione che utilizza quel database, il testo aggiuntivo "(In recovery)" appare di nuovo accanto al nome del mio database.

Ho aspettato fino al termine del "processo di recupero", quindi ho portato il database offline e lo ho riportato online.

Ho riavviato il server, riavviato il computer e quando la mia applicazione era in esecuzione, viene visualizzato nuovamente il testo aggiuntivo. Nei log di SQL Server il messaggio "Avvio del database 'myDatabase'" appare alcune volte. Sembra che il database funzioni perché posso inserire dati, ma lo stato mostra che succede qualcosa.

Il registro del server non mostra nulla di interessante. L'unica cosa anomala è che ho 30 voci di "Avvio del database 'myDatabase'".

So che quando il server si avvia ogni database passa attraverso il recupero prima che sia pronto per l'uso. Ma nel mio caso, il database diventa online, quindi mostra "myDatabase (In recovery)". Se chiudo l'applicazione, il database passa a Status: Normal. Questo mi sta facendo impazzire.

Ho persino installato una nuova istanza di SQL Server e ho inserito il vecchio database "myDatabase". Il problema si verifica ancora.

Quando eseguo questa query:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Mostra recupero, online, sospetto e ritorno a online, quindi recupero e così via.

Risposte:



16

Non sono sicuro che questo possa aiutare a risolvere il problema, ma puoi provarlo.

Correre:

RESTORE DATABASE YourDatabase WITH RECOVERY

Verifica se quanto sopra porta il database fuori dalla modalità di recupero. In caso contrario, il problema potrebbe essere qualcos'altro.

Puoi provare il comando seguente e vedere se il database è corrotto?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Se rileva un danneggiamento, è possibile che si desideri ripristinare il database utilizzando DBCC CHECKDB


6

Ogni volta che porti un database online, viene sottoposto a un processo di recupero. Sono un po 'confuso dal tuo modo di esprimere il problema. Stai vedendo il database andare al ripristino in qualsiasi momento diverso da quando il database viene portato offline (o dalla tua interruzione di corrente originale o da averlo portato offline e poi di nuovo online)? In tal caso, il database non è in linea per qualche altro motivo. Meglio controllare i log del server SQL per vedere cosa sta succedendo.

Dovresti anche controllare il registro eventi di Windows per qualcosa come un errore del disco. Il database non dovrebbe essere avviato e ripristinato durante le normali operazioni.

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.