Исправление проблемы состояния ожидания восстановления базы данных SQL

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

  • В сети – Состояние остается в сети, если возникает какая-либо ошибка при работе с запросом или любой другой операцией в SQL. Это может быть один или несколько поврежденных файлов, которые приводят к этому состоянию, но даже тогда база данных доступна для проверки.
  • Подозревать – Проще говоря, если база данных не подлежит восстановлению при запуске SQL-сервера, это считается подозрительным состоянием.
  • Ожидание восстановления – Пользователи легко путаются между состояниями «Подозрение» и «Ожидание восстановления». Согласно состоянию «Подозрение», восстановление не удалось, но это не так в состоянии ожидания восстановления. Состояние ожидания восстановления помечается в базе данных, когда сервер SQL знает, что база данных нуждается в восстановлении, но что-то мешает запуску восстановления. В отличие от подозрительного состояния, состояние ожидания восстановления знает, что восстановление еще не запущено.
    Состояние ожидания восстановления подозрительного состояния

Можно ли проверить текущее состояние базы данных?

Да, вполне возможно проверить довольно простым способом. Просто нужно запустить запрос для проверки текущего состояния базы данных:

ВЫБЕРИТЕ имя, state_desc из sys. базы данных
ИДТИ
ВЫБЕРИТЕ имя, state_desc из sys.  базы данных

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Это откроет диалоговое окно, в котором будет показано состояние различных файлов в базе данных.

По каким причинам база данных находится в состоянии ожидания восстановления?

  • Иногда база данных не закрывается должным образом, что приводит к тому, что система понимает, что существует по крайней мере одна незавершенная транзакция, которую необходимо было завершить. Это приводит к удалению текущего активного файла журнала транзакций, и требуется восстановление, чтобы получить последнюю сохраненную базу данных для решения проблемы.
  • Одним из распространенных способов создания любой проблемы является перенос файлов журнала с одного сервера на другой. Много раз это может привести к повреждению файлов, которые приводят к этой проблеме.
  • Если на диске или в памяти не хватает места, это может привести к запуску предотвращения в процессе восстановления данных. Следовательно, база данных получает состояние ожидания восстановления.

Как исправить состояние ожидания восстановления в базе данных SQL Server?

Важно понимать, что перед началом восстановления базы данных необходимо выполнить несколько процедур. Самое главное — сделать резервную копию всей базы данных, чтобы в случае, если что-то пойдет не так, у вас был еще один шанс. Для исправления состояния ожидания восстановления базы данных можно использовать два ручных метода. Мы собираемся объяснить пошаговый процесс, чтобы каждому было легче его выполнить.

Метод № 1: пометить базу данных в аварийном режиме и начать принудительное восстановление файлов

Преимущество пометки базы данных в аварийном режиме заключается в том, что база данных будет помечена как READ_ONLY, отключено ведение журнала из любой системы и предоставлены разрешения и доступ системному администратору только для защиты файлов и базы данных во время выполнения команд. По сути, это перенесет недоступную базу данных в онлайн, чтобы сделать ее доступной. После отметки и открытия аварийного режима для базы данных пользователь может попробовать выполнить команду DBCC CHECKDB вместе с параметром REPAIR_ALLOW_DATA_LOSS, чтобы начать устранение проблемы. Откройте SSMS и выполните следующие запросы:

ИЗМЕНИТЬ БАЗУ ДАННЫХ [DBName] УСТАНОВИТЬ АВАРИЙНЫЙ;
ИДТИ
ИЗМЕНИТЬ БАЗУ ДАННЫХ [DBName] установить single_user
ИДТИ
DBCC ПРОВЕРКА БД ([DBName]REPAIR_ALLOW_DATA_LOSS) СО ВСЕМИ_ОШИБКАМИGS;
ИДТИ
ИЗМЕНИТЬ БАЗУ ДАННЫХ [DBName] установить multi_user
ИДТИ

Способ № 2: пометить базу данных в аварийном режиме, сначала отсоединить, а затем снова подключить основную базу данных

Этот ручной метод также требует, чтобы база данных была помечена в аварийном режиме для выполнения решения. После того, как база данных помечена в аварийном режиме, отсоедините базу данных и снова подключите ее, что можно сделать, выполнив следующие запросы:

ИЗМЕНИТЬ БАЗУ ДАННЫХ [DBName] УСТАНОВИТЬ АВАРИЙНЫЙ;
ИЗМЕНИТЬ БАЗУ ДАННЫХ [DBName] установить multi_user
EXEC sp_detach_db ‘[DBName]’
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = Н'[mdf path]’

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

Хотя эти методы довольно успешны, и мы рекомендуем пользователям выполнять их так же, есть несколько других альтернатив, которые могут помочь исправить состояние ожидания восстановления. Некоторые компании представили инструменты для исправления состояния базы данных. Таким образом, если приведенные выше решения не сработают, пользователи определенно могут попробовать сторонние инструменты для восстановления поврежденной базы данных SQL.

Заключение

База данных SQL Server обычно не подвержена ошибкам, но в некоторых случаях база данных может быть переведена в состояние ожидания восстановления. Эту проблему легко решить, если сначала понять состояние, а затем выполнить решения, как указано выше, с помощью запросов. Если проблема все еще не решена, либо снова используйте методы для файла резервной копии, либо используйте сторонние инструменты восстановления базы данных SQL.

Скачать сейчас

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *