Skip to content

A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent

Ошибка "A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent" обычно возникает в SQL Server, особенно при выполнении задач обслуживания, репликации, зеркального отображения или других операций, требующих сбора метаданных (facts).

Возможные причины:

  1. Недостаточно места в базе данных tempdb — SQL Server активно использует tempdb для временных объектов и операций.
  2. Повреждение системных таблиц или несогласованность метаданных.
  3. Проблемы с правами доступа у учетной записи, под которой выполняется операция.
  4. Ошибка в самом процессе сбора метаданных (например, ошибка агента SQL или задачи обслуживания).

🔧 Решения:

1. Проверить место на диске и размер tempdb

  • Убедитесь, что диск, на котором находится tempdb, не заполнен.
  • Проверьте текущий размер файлов tempdb:
SELECT name, size/128.0 AS CurrentSizeMB,
       size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS FreeSpaceMB
FROM sys.database_files;

Что делать:

  • Если свободное место мало, расширьте файлы tempdb или очистите диск.
  • Настройте автогrowth для tempdb (но не слишком часто — это может вызвать фрагментацию).
  • Для критических систем рекомендуется выделить отдельный диск для tempdb.

2. Проверить целостность системных таблиц

Если tempdb в порядке, возможно, есть повреждения в системных таблицах.

Выполните проверку целостности:

DBCC CHECKDB('имя_вашей_базы_данных') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Для системной базы master и других:

DBCC CHECKDB('master') WITH NO_INFOMSGS, ALL_ERRORMSGS;
DBCC CHECKDB('model') WITH NO_INFOMSGS, ALL_ERRORMSGS;

❗ Базу tempdb проверять напрямую нельзя, т.к. она пересоздается при каждом перезапуске SQL Server.

Если найдены ошибки — см. раздел восстановления.


3. Перезапустить службу SQL Server

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

⚠️ Перед этим сохраните все данные и убедитесь, что это можно сделать без влияния на пользователей.


4. Проверить права доступа

Убедитесь, что аккаунт, под которым работает SQL Server Agent или выполняется задача, имеет нужные разрешения.

  • Обычно это: sysadmin, db_owner или другие роли, в зависимости от задачи.
  • Также проверьте права на доступ к каталогам с логами и файлами БД.

5. Проверить журнал SQL Server (SQL Server Error Log)

Иногда там содержится дополнительная информация об ошибке.

Открыть журнал можно через SSMS:

Management → SQL Server Logs

Ищите записи вокруг времени появления ошибки.


6. Обновление SQL Server

Это может быть известная проблема Microsoft. Убедитесь, что установлены последние обновления и Service Packs.


📝 Пример сценария

Вы получили ошибку при запуске задачи обслуживания "Сбор статистики использования".

  1. Вы проверяете tempdb — мало места.
  2. Расширяете файлы tempdb вручную или увеличиваете автогроу.
  3. Задача начинает работать нормально.

✅ Рекомендации

  • Не используйте автоматическое расширение tempdb без контроля.
  • Используйте отдельный диск или LUN для tempdb.
  • Регулярно проверяйте целостность баз (DBCC CHECKDB).
  • Следите за логами SQL Server.