SQL статус базы подозрительный

Столкнулся с неприятной ситуацией. Свет в здании отключили, компьютер вырубился. В результате – в MS SQL статус базы «Подозрительный». Архив, конечно же, двухнедельной давности (его пример другим наука… делайте архивы чаще!) Восстанавливать не вариант, куча инфы потеряется. Включить нормальный режим работы тоже не получается, так как нужно сначала привести базу в порядок. А привести базу в порядок через DBCC checkdb не позволяет сам MS SQL — база данных подозрительная!
Итого имеем: в SQL базе данные недоступны, и кнопка «всё починить» отсутствует. Что делать?
Нашел в интернете такое решение (надо выполнить строки последовательно):

ALTER DATABASE SET EMERGENCY ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE DBCC CHECKDB (‘имя_базы’, REPAIR_ALLOW_DATA_LOSS) ALTER DATABASE SET MULTI_USER

Запустил, проверка прошла успешно, в SQL базе аварийный режим отключился. Ошибок 0 (но думаю, мне просто повезло).
Возможно, кому-то этот алгоритм тоже поможет!

Тем не менее, к спецам у меня есть вопрос:
Во-первых, что делать, если ошибки все-таки найдутся? Как я понимаю, выполнение DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS может привести к потере данных, и не факт, что незначительной потере. Что в такой ситуации делать?

Microsoft.SQLServer.2016.Database.DBStatusMonitor (UnitMonitor)

Этот монитор проверяет состояние базы данных, предоставленное Microsoft SQL Server.

Knowledge Base article:

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

Причины

Неисправное состояние показывает, что в настоящий момент база данных SQL Server недоступна. Все состояния базы данных, кроме ONLINE, вызовут переход в неисправное состояние. Возможные состояния подробно приведены ниже:

Состояние базы данных SQL

Описание

Исправное состояние

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

Исправна

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

Критическое

ОЖИДАНИЕ ВОССТАНОВЛЕНИЯ

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

Критическое

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

Критическое

Пользователь изменил базу данных и установил состояние базы данных в значение EMERGENCY. База данных находится в однопользовательском режиме и, возможно, в процессе исправления или восстановления. База данных помечена как READ_ONLY, ведение журнала отключено и доступ возможен только элементам предопределенной роли сервера sysadmin. EMERGENCY используется в основном для диагностики. Например, база данных, помеченная как подозрительная, может быть переведена в состояние EMERGENCY. Это предоставляет системному администратору доступ к базе данных только для чтения. Только члены предопределенной роли сервера sysadmin могут перевести базу данных в состояние EMERGENCY.

Критическое

Восстанавливаются один файл (или несколько), принадлежащий к первичной файловой группе, или один файл (или более), принадлежащий ко вторичным группам, причем база данных остается в автономном режиме. База данных недоступна.

Критическое

База данных в процессе восстановления. Процесс восстановления является переходным состоянием; после успешного завершения восстановления база данных автоматически переходит в режим вне сети. При неудачном завершении восстановления база данных будет помечена как подозрительная. База данных недоступна.

Предупреждение

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

Решения

Можно попытаться снова перевести базу данных в режим «в сети», чтобы устранить данную проблему. Для этого выполните следующую задачу.:

Перевод базы данных в режим «в сети»

Внешнее

Более подробную информацию о SQL Server см. в:

http://go.microsoft.com/fwlink/?LinkId=799305

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Приоритет предупреждения

Определяет приоритет предупреждения.

Обычные

Серьезность предупреждения

Определяет серьезность предупреждения.

Ошибка

Включено

Включает или отключает рабочий процесс.

Да

Создает предупреждения

Определяет, создает ли рабочий процесс предупреждения.

Да

Интервал (в секундах)

Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс.

Время синхронизации

Время синхронизации указывается в 24-часовом формате и может быть опущено.

Время ожидания (в секундах)

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

Element properties:

Target Microsoft.SQLServer.2016.Database
Parent Monitor System.Health.AvailabilityState
Category AvailabilityHealth
Enabled True
Alert Generate True
Alert Severity Error
Alert Priority Normal
Alert Auto Resolve True
Monitor Type Microsoft.SQLServer.2016.DBStatus
Remotable True
Accessibility Public
Alert Message

MSSQL 2016: база данных находится в автономном/ожидании восстановления/потенциально поврежденном/аварийном состоянии

База данных {2} экземпляра SQL Server {1} на компьютере {0} находится в автономном/ожидании восстановления/потенциально поврежденном/аварийном состоянии.

RunAs Default

Source Code:

<UnitMonitor ID=»Microsoft.SQLServer.2016.Database.DBStatusMonitor» Accessibility=»Public» Enabled=»true» Target=»SQL2016Core!Microsoft.SQLServer.2016.Database» ParentMonitorID=»SystemHealth!System.Health.AvailabilityState» Remotable=»true» Priority=»Normal» TypeID=»Microsoft.SQLServer.2016.DBStatus» ConfirmDelivery=»false»>
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage=»Microsoft.SQLServer.2016.Database.DBStatusMonitor.AlertMessage»>
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property/DatabaseName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID=»Good» MonitorTypeStateID=»Good» HealthState=»Success»/>
<OperationalState ID=»Bad» MonitorTypeStateID=»Bad» HealthState=»Error»/>
<OperationalState ID=»NeitherGoodNorBad» MonitorTypeStateID=»NeitherGoodNorBad» HealthState=»Warning»/>
</OperationalStates>
<Configuration>
<ConnectionString>$Target/Host/Property/ConnectionString$</ConnectionString>