Найти в Дзене
Будни одинэсника | 1С

Памятка по восстановлению базы SQL из состояния — Подозрительная (Suspect)

Это памятка по восстановлению базы данных по часто встречающейся проблеме, когда база данных Microsoft SQL Server переходит в состояние — Подозрительная (Suspect). Причин, почему база может переходить в этот режим много, самые распространенные это: Не всегда проблема носит критический характер, но нужно быть готовым и к серьезным последствиям. 🔥 Самая главная рекомендация — Делайте резервные копии! 1. Не отсоединяйте базу! Обратно можете не присоединить и тогда исправлять придется только сторонними средствами. Если не было копий, то можно для начало остановить службу SQL сервера и скопировать файлы баз данных (*.mdf и *.ldf). 🔥 На каждом этапе помните, что операции необратимые и хорошо бы иметь резервные копии хотя бы приближенные к актуальному состоянию базы. 2. Попробовать простым способом, без проведения тестирования. нужно выполнить скрипт, который просто переведет базу в режим ONLINE. Выполняем перевод базы в аварийный режим: EXEC sp_resetstatus 'DataBase'; ALTER DATABASE "Da
Оглавление

Это памятка по восстановлению базы данных по часто встречающейся проблеме, когда база данных Microsoft SQL Server переходит в состояние — Подозрительная (Suspect).

Причин, почему база может переходить в этот режим много, самые распространенные это:

  • Проблемы с электропитанием;
  • Недостаточно места на жестком диске;
  • Проблемы с жестким диском;
  • Конфликт с антивирусными программами;
  • Ошибки в базе данных;
  • Файлы баз данных стали недоступны;
  • и т.д.

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

🔥 Самая главная рекомендация — Делайте резервные копии!

Порядок действий для исправления

1. Не отсоединяйте базу! Обратно можете не присоединить и тогда исправлять придется только сторонними средствами. Если не было копий, то можно для начало остановить службу SQL сервера и скопировать файлы баз данных (*.mdf и *.ldf).

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

2. Попробовать простым способом, без проведения тестирования. нужно выполнить скрипт, который просто переведет базу в режим ONLINE.

Выполняем перевод базы в аварийный режим:

EXEC sp_resetstatus 'DataBase';
ALTER DATABASE "DataBase" SET EMERGENCY

Далее, переводим базу в многопользовательский режим и пробуем перевести в рабочее состояние:

ALTER DATABASE "DataBase" SET MULTI_USER
ALTER DATABASE "DataBase" SET ONLINE

DataBase — Имя "поврежденной" базы данных. Все команды можно выполнить одним запросом, но лучше последовательно, чтобы проследить результат выполнения по каждой команде.

В большинстве случаев база перейдет в нормальный режим работы. Но чтобы понять все ли хорошо с данными. Рекомендуется второй способ.

2. Вариант с тестирование базы данных.

Переводим в аварийный режим:

EXEC sp_resetstatus 'DataBase';
ALTER DATABASE "DataBase" SET EMERGENCY

Тестируем базу и переводим в режим одного пользователя с принудительным отключением всех активных соединений:

DBCC CHECKDB('DataBase')
ALTER DATABASE "DataBase" SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Тестируем базу и пытаемся устранить обнаруженные ошибки:

DBCC CHECKDB('DataBase', REPAIR_ALLOW_DATA_LOSS)

Переводим в многопользовательский режим и далее в рабочее состояние:

ALTER DATABASE "DataBase" SET MULTI_USER
ALTER DATABASE "DataBase" SET ONLINE

По итогу имеем общий рабочий скрипт:

EXEC sp_resetstatus 'DataBase';
ALTER DATABASE "DataBase" SET EMERGENCY
DBCC CHECKDB('DataBase')
ALTER DATABASE "DataBase" SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CHECKDB('DataBase', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE "DataBase" SET MULTI_USER
ALTER DATABASE "DataBase" SET ONLINE

Для выполнения скрипта нужно зайти в консоль управления SQL сервера, на панели инструментов нажать кнопку — Создать запрос, далее вставить текст запроса (либо целиком либо выполнять по строчно), вписать название вашей базы данных и нажать кнопку — Выполнить.

-2

------------

Если что-то не получается, пишите нам в Телеграм.

Следите за новостями в телефоне? Подпишитесь на наш Telegram-канал.