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