2009-09-23 2 views
11

Вчера я восстановил базу данных 35Gb на своей машине dev, и все это было хорошо до сегодняшнего утра, когда мое клиентское приложение не удалось подключиться. Поэтому я открыл SQL Management Studio, чтобы найти базу данных «In Recovery».База данных SQL Server 2005 «В восстановлении»

Я не знаю огромного количества об этом, кроме как это обычно связано с незафиксированными транзакциями. Теперь, поскольку я знаю, что не является незавершенными транзакциями, это должно быть что-то еще. Итак, во-первых, я хотел бы знать, при каких условиях это может произойти. Во-вторых, пока это происходит, я не могу работать, если есть какие-либо способы остановить восстановление, ускорить его или, по крайней мере, найти, как долго это будет помогать.

+0

По моему опыту я видел то же самое, когда сервер разбился (по ошибке ОС или прерыванием питания) для большой базы данных (около 100 ГБ). Вы обнаружили в средстве просмотра событий некоторые ошибки или предупреждения? Единственный способ остановить восстановление - это закрыть сервер sql, но когда сервер перезагрузится ... восстановление снова начнется! –

ответ

14

Не закрывайте SQL во время восстановления. Пусть закончится. Проверьте журналы ошибок. Если он не завершится, восстановите его из резервной копии.

+1

Отметьте это также: http://www.sqlskills.com/BLOGS/PAUL/category/Bad-Advice.aspx – 2009-09-23 10:35:20

+0

ну это на самом деле не ответ, но это лучшее, что у меня получилось. Странно то, что я сделал именно это и сразу же запустил 'dbcc checkdb', и не было абсолютно ничего плохого. С тех пор не произошло. Кто знает, что было! – Stimul8d

+2

Это могло быть что угодно. Восстановление обычно происходит, когда служба MSSQL не заканчивается правильно, а базы данных не проверяются, поэтому все журналы переигрываются. Если на этапе, когда сервер скончался, у вас была особенно длительная транзакция, ей пришлось бы ее переработать. – 2009-09-25 07:44:43

11

Вы можете узнать, сколько времени это займет, посмотрев в средстве просмотра событий. В разделе «Приложения» в журналах Windows вы должны получить информационные сообщения от MSSQLSERVER с EventID 3450, рассказывающие вам, что это такое. Что-то вроде:

Восстановление базы данных «XYZ» составляет 10% полных (примерно 123456 секунд остаются) и т.д. и т.п.

Я боюсь, что я не знаю, как остановить его (пока).

+1

Не полный ответ, но чертовски полезен все тот же. Спасибо :-) – Stimul8d

+3

также, может запустить этот скрипт, чтобы увидеть статус восстановления: http://timlaqua.com/2009/09/determining-how-long-a-database-will-be-in-recovery-sql-server- 2008 / – nanonerd

Смежные вопросы