Что это значит, если база данных всегда идет в RECOVERY? - PullRequest
3 голосов
/ 05 августа 2011

Каждый раз, когда я запускаю запрос, моя база данных не отвечает на второй немедленный запрос и жалуется, что она находится в режиме восстановления (хотя она ничего не показывает рядом с именем базы данных). Это происходит в течение 5-10 минут, после чего все возвращается к нормальной жизни.

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

Ответы [ 4 ]

7 голосов
/ 05 августа 2011

Обычно база данных находится в режиме «Восстановление» только при запуске - когда SQL Server запускает базу данных. Если ваша база данных переходит в режим восстановления из-за оператора SQL, у вас почти наверняка есть какое-то повреждение.

Эта коррупция может принимать одну из многих форм, и ее трудно диагностировать. Прежде чем что-то делать, нужно проверить несколько вещей.

  1. Убедитесь, что у вас есть хорошие резервные копии вашей базы данных - скопированы в отдельную файловую систему / сервер.
  2. Проверьте Журнал событий Windows и найдите ошибки. Если обнаружены какие-либо критические ошибки, свяжитесь с Microsoft.
  3. Проверьте SQL Server ERRORLOG и найдите ошибки. Если обнаружены какие-либо критические ошибки, свяжитесь с Microsoft.
  4. Запустите chkdsk на всех жестких дисках сервера.
  5. Запустите dbcc checkdb для вашей базы данных. Если обнаружены какие-либо ошибки, вы можете попытаться исправить базу данных с помощью опции REPAIR_REBUILD. Если какие-либо ошибки не могут быть исправлены, обратитесь в Microsoft.
  6. Восстановите резервную копию вашей базы данных на другом сервере. Это подтвердит, является ли проблема в вашей базе данных или SQL Server / машине.

После шагов № 4, № 5 и № 6 снова запустите ваши запросы, чтобы выяснить, можно ли перевести базу данных в режим восстановления. К сожалению, коррупция может произойти по неисчислимому количеству причин, но важнее всего данные. Это подтвердит, является ли это проблемой с вашими данными или в другом месте. Если у вас есть резервные копии, которые можно восстановить на другом сервере SQL Server, и восстановленная копия не будет постоянно переходить в режим восстановления, вам не придется слишком сильно беспокоиться.

Я всегда ставлю номер 6 в последнюю очередь, потому что настройка отдельного сервера с SQL Server и перемещение / восстановление большой базы данных может занять много времени; но если у вас уже есть резервный / тестовый сервер, это может быть хорошим первым вариантом. В конце концов, это не вызовет простоев на вашем живом сервере.

Наконец, не бойтесь связываться с Microsoft по этому поводу. Базы данных часто критически важны, и у Microsoft есть много инструментов для диагностики проблем, подобных этой.

6 голосов
/ 21 января 2012

Поздний ответ ...

Есть ли в вашей базе данных autoclose со значением true? Если установлено, СУБД должна подключить базу данных к сети, которая может учитывать ваши симптомы

2 голосов
/ 28 сентября 2012

Это может произойти, когда служба SQL Server сильно зависала в середине операций записи, а иногда и в режиме во время запуска сервера.Следуйте запросу по этой ссылке для мониторинга

http://errorbank.blogspot.com/2012/09/mssql-server-database-in-recovery.html

1 голос
/ 05 августа 2011

Это случалось только тогда, когда служба (или служба SQL Server) сильно зависала в середине операций записи.Как только это вернулось, все было хорошо.

Однако, если это случается часто, то я бы заподозрил какой-то сбой уровня диска.Я хотел бы убедиться, что резервная копия базы данных полностью сохранена, и переместить ее на другой сервер, пока вы запускаете диагностику / перестраиваете проблемный сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...