Recovery Pending SQL: что значит состояние базы и как действовать

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

Это не обычная ошибка подключения и не просто «сервер не запустился». Состояние часто связано с файлами базы, журналом транзакций, правами доступа, нехваткой места на диске, повреждением файлов или проблемами после аварийной остановки

Что проверить первым делом

Сначала посмотрите состояние базы:

SELECT
    name,
    state_desc,
    recovery_model_desc
FROM sys.databases
WHERE name = 'ShopDemo';

Если state_desc показывает RECOVERY_PENDING, не начинайте сразу с радикальных команд. Проверьте базовые причины:

  • доступны ли MDF и LDF-файлы
  • не изменились ли права на папки
  • есть ли свободное место на диске
  • не отключался ли диск с файлами базы
  • не поврежден ли LDF-файл
  • есть ли свежий backup

Очень часто SQL Server не может восстановить базу не из-за «ошибки SQL», а из-за файловой проблемы

Проверить пути к файлам

Если база видна в sys.master_files, можно посмотреть, где лежат файлы:

SELECT
    DB_NAME(database_id) AS database_name,
    type_desc,
    physical_name
FROM sys.master_files
WHERE database_id = DB_ID('ShopDemo');

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

Проверить свободное место

Если на диске нет места, SQL Server может не завершить восстановление. Освободите место, но не удаляйте MDF/LDF-файлы базы. Лучше убрать временные файлы, старые архивы, лишние бэкапы или перенести ненужные данные

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

Что можно попробовать безопасно

Если причина была в диске, правах или месте, после исправления иногда достаточно перезапустить службу SQL Server или перевести базу в online:

ALTER DATABASE ShopDemo SET ONLINE;

Если база не возвращается, смотрите сообщения в SQL Server error log. Там часто прямо указано, какой файл недоступен или какая ошибка возникла при восстановлении

Когда нужен restore из backup

Если файлы повреждены или журнал не позволяет восстановить базу, самый нормальный путь — восстановление из резервной копии. Поэтому backup важнее, чем попытки «починить любой ценой»

RESTORE DATABASE ShopDemo
FROM DISK = 'D:\Backup\ShopDemo.bak'
WITH REPLACE;

Команда выше перезапишет базу, поэтому ее нельзя запускать без понимания последствий. Для рабочей базы сначала сохраняют текущее состояние файлов, проверяют backup и согласуют окно восстановления

Почему опасны случайные инструкции из интернета

В теме Recovery Pending часто встречаются советы перевести базу в EMERGENCY, выполнить DBCC CHECKDB с repair-режимом или пересоздать лог. Эти действия действительно существуют, но они не являются первым шагом для новичка. Некоторые варианты могут привести к потере данных

Правильный порядок спокойнее:

  1. Не удалять файлы базы
  2. Проверить место, права и доступность дисков
  3. Посмотреть error log
  4. Найти свежий backup
  5. Сохранить копию MDF/LDF, если есть риск повреждения
  6. Только потом выбирать способ восстановления

Мини-практика

На учебной базе не нужно специально ломать файлы. Вместо этого потренируйтесь читать состояние баз и пути файлов:

SELECT name, state_desc
FROM sys.databases
ORDER BY name;

SELECT
    DB_NAME(database_id) AS database_name,
    type_desc,
    physical_name
FROM sys.master_files
ORDER BY database_name, type_desc;

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

Частые ошибки

  • Удаляют LDF-файл, думая, что он лишний
  • Сразу запускают repair-команды без бэкапа
  • Не проверяют свободное место на диске
  • Не смотрят SQL Server error log
  • Путают Recovery Pending и обычную ошибку подключения
  • Пытаются восстановить рабочую базу без копии текущих файлов

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x