2009-09-23 5 views
11

Ho ripristinato un database da 35 Gb sulla mia macchina di sviluppo ieri e andava tutto bene fino a stamattina quando la mia app client non è riuscita a connettersi. Così ho aperto SQL Management Studio per trovare il database "In recupero".Database SQL Server 2005 'In Recovery'

Non conosco una quantità enorme di questo oltre che di solito ha a che fare con transazioni senza commit. Ora poiché so che lo non sono transazioni non salvate, deve essere qualcos'altro. Quindi, prima di tutto, mi piacerebbe sapere a quali condizioni questo può accadere. In secondo luogo, mentre sta andando avanti non posso lavorare quindi se ci sono modi per fermare il recupero, accelerarlo o almeno trovare approssimativamente quanto sarà lungo che sarebbe di aiuto.

+0

Nella mia esperienza ho visto lo stesso quando il server si è arrestato in modo anomalo (per errore del sistema operativo o interruzione dell'alimentazione) per un grande database (circa 100 GB). Hai trovato nel visualizzatore dell'evento qualche errore o avviso? L'unico modo per interrompere il recupero è spegnere il server SQL, ma quando il server si riavvia ... il ripristino ricomincia! –

risposta

14

Non arrestare SQL mentre il ripristino è in corso. Lascialo finire. Controlla i log degli errori. Se non finisce, ripristina dal backup.

+1

Controlla anche questo: http://www.sqlskills.com/BLOGS/PAUL/category/Bad-Advice.aspx –

+0

beh, non è davvero una risposta, ma è il meglio che ho ottenuto sembra. Stranamente, ho fatto proprio questo e ho eseguito 'dbcc checkdb' subito dopo e non c'era assolutamente niente di sbagliato. Non è mai successo neanche. Chissà cosa era successo! – Stimul8d

+2

Potrebbe essere stato qualsiasi cosa, allora. Il ripristino si verifica in genere quando il servizio MSSQL non termina correttamente e i database non vengono controllati, quindi tutti i registri vengono riprodotti. Se si è verificata una transazione particolarmente lunga nella fase in cui il server è morto, dovrebbe essere rielaborato. –

11

Puoi scoprire quanto ci vorrà osservando nel Visualizzatore eventi. Nella sezione Applicazione sui registri di Windows dovresti ricevere i messaggi informativi da MSSQLSERVER con EventID 3450 che ti dice cosa sta facendo. Qualcosa di simile:

recupero del database 'XYZ' è del 10% completa (circa 123456 secondi rimangono) ecc ecc

temo non so come fermarlo (ancora).

+1

Non è una risposta completa, ma dannatamente utile lo stesso. Grazie :-) – Stimul8d

+3

anche, può eseguire questo script per vedere lo stato di recupero: http://timlaqua.com/2009/09/determining-how-long-a-database-will-be-in-recovery-sql-server- 2008 / – nanonerd