Сегодня, после сбоя питания, одна база данных (с Recovery: full) показывает «In Recovery» в SSMS. Так:
myDatabase (в восстановлении) (статус базы данных: восстановление, выключение)
После завершения «процесс восстановления» в базе данных показывает имя myDatabase без «(в восстановлении)». Я думал, что проблема была решена, но это не так.
Когда я запустил приложение, которое использует эту базу данных, дополнительный текст «(В восстановлении)» снова появляется рядом с именем моей базы данных.
Я подождал, пока не закончится «процесс восстановления», а затем отключил базу данных и снова запустил ее в онлайн.
Я перезапустил сервер, перезапустил компьютер, и когда мое приложение работало, снова появляется дополнительный текст. В журналах SQL Server сообщение «Запуск базы данных« myDatabase »выглядит несколько раз. Кажется, что база данных работает, потому что я могу вставить данные, но состояние показывает, что что-то происходит.
Журнал сервера не показывает ничего интересного. Единственная ненормальная вещь в том, что у меня есть 30 записей «Запуск базы данных« myDatabase »».
Я знаю, что когда сервер запускается, каждая база данных проходит восстановление, прежде чем она будет готова к использованию. Но в моем случае база данных выходит в интернет, а затем показывает «myDatabase (в восстановлении)». Если я закрываю приложение, база данных переходит в Status: Normal. Это сводит меня с ума.
Я даже установил новый экземпляр SQL Server и поместил на него старую базу данных «myDatabase». Проблема все еще происходит.
Когда я запускаю этот запрос:
SELECT databasepropertyex('nyDatabase', 'STATUS')
Это показывает восстановление, онлайн, подозрительность и возврат к онлайн, а затем восстановление и так далее.
Я не уверен, поможет ли это решить проблему, но вы можете дать ей шанс.
Запустить:
RESTORE DATABASE YourDatabase WITH RECOVERY
Посмотрите, выводит ли приведенное выше базу данных из режима восстановления. Если это не так, то проблема может быть чем-то другим.
Можете ли вы попробовать приведенную ниже команду и посмотреть, не повреждена ли база данных?
DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS
Если он обнаружит повреждение, вы можете восстановить базу данных с помощью DBCC CHECKDB
Всякий раз, когда вы приносите базу данных в Интернете, она проходит процесс восстановления. Я немного смущен вашей формулировкой проблемы, хотя. Видите ли вы, что база данных восстанавливается в любое время, кроме случаев, когда база данных отключается (либо из-за вашего первоначального сбоя питания, либо из-за того, что вы отключили ее, а затем снова подключились к сети)? Если это так, база данных отключается по какой-то другой причине. Лучше всего проверить журналы сервера SQL, чтобы увидеть, что происходит.
Вы также должны проверить журнал событий Windows на предмет сбоя диска. База данных не должна запускаться и переходить в восстановление во время нормальной работы.
Проблема заключалась в том, что свойство базы данных AutoClose
было установлено.
Решение состояло в том, чтобы установить AutoClose
на false.