Имеется парочка MSSQL серверов с настроенным зеркалированием. После перезагрузки зеркальная база находится в состоянии "В процессе восстановления" (In Recovery). При этом на основном сервере база "Отключена" (Disconnected).
Ошибок в логах не видно. Восстановление баз после перезагрузки прошло штатно, о чем свидетельствует запись в логах:
Recovery is complete. This is an informational message only. No user action is required.
Общее восстановление всех баз данных (кроме tempdb) полностью завершено. Это основное сообщение о том, что SQL Server закончил применять транзакции к базам данных при старте.
Скорее всего проблема с эндпоинтами зеркалирования.
Определите имя эндпоинта зеркалирования на зеркальном сервере:
SELECT name FROM sys.database_mirroring_endpoints;Обычно эндпоинт называется Mirroring или имеет похожее имя.
Перезапустите эндпоинт на зеркальном сервере:
-- 1. Останавливаем эндпоинт
ALTER ENDPOINT [Имя_Эндпоинта] STATE = STOPPED;
GO
-- 2. Запускаем эндпоинт заново
ALTER ENDPOINT [Имя_Эндпоинта] STATE = STARTED;
GOПосле этого подождите 10-30 секунд и обновите список баз (F5 в SSMS).
Обычно это помогает. Если не помогло, повторите операцию на основном сервере.
Если после всех действий базы остаются в RECOVERING, это может указывать на:
- Проблемы с сетью или доступом между серверами
- Различия в журналах транзакций между principal и mirror
- Повреждение файлов базы данных на зеркальном сервере
В этом случае потребуется полная перенастройка зеркалирования с нуля.