Что это значит, если база данных всегда продолжает восстанавливаться?

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

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

4 ответа:

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

данное повреждение может принимать много форм и может быть трудно диагностировать. Прежде чем что-то делать, нужно кое-что проверить.

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

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

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

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

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

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

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

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

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

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