Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL 8989 1С:Предприятие и СУБД

MSSQL Ошибка 8989: DBCC CHECKDB terminated abnormally

Обновлено: 25.08.2026 · Официальная документация ↗
  • Команда проверки падает: Msg 8989, Level 16, State 1: DBCC CHECKDB terminated abnormally due to error 1807 / 701 / 823.
  • Регламентное задание ночной проверки целостности баз 1С не выполняется.
  • В журнале SQL Server регистрируется сбой создания скрытого внутреннего снимка базы (Database Snapshot creation failed).
  • Диск с базой данных tempdb переполняется до 100%.

1. Анализ первопричины сбоя (Вложенный Error Code)

Ошибка 8989 всегда является следствием другой ошибки, указанной в тексте сообщения:

  • Error 701: Нехватка оперативной памяти для структур CHECKDB.
  • Error 1827 / 1105: Переполнение диска файлами tempdb или снимка базы.
  • Error 823/824: Ошибка чтения с диска физического сектора.

2. Расширение дискового пространства под tempdb

-- Перенос файлов tempdb на скоростной диск с достаточным объемом
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'T:\TempDB\tempdb.mdf', SIZE = 10GB, FILEGROWTH = 1GB);
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'T:\TempDB\templog.ldf', SIZE = 5GB, FILEGROWTH = 512MB);

3. Запуск проверки с параметром PHYSICAL_ONLY

Если для полной проверки не хватает ресурсов, выполните быструю проверку только физического уровня (требует на 90% меньше памяти и tempdb):

DBCC CHECKDB ('DatabaseName') WITH PHYSICAL_ONLY, NO_INFOMSGS;

4. Запуск проверки с ограничением параллелизма (MAXDOP)

-- Отключение параллелизма для снижения нагрузки на память
DBCC CHECKDB ('DatabaseName') WITH MAXDOP = 1, NO_INFOMSGS;

5. Запуск проверки на базе без снимка (TABLOCK)

-- Проверка в монопольном режиме без создания Database Snapshot
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('DatabaseName') WITH TABLOCK, NO_INFOMSGS;
ALTER DATABASE [DatabaseName] SET MULTI_USER;
💡 Практика специалистов: Для высоконагруженных баз 1С размером более 2 ТБ не запускайте полный CHECKDB на основном сервере. Настройте проверку целостности на вторичной реплике Always On Availability Groups или выполняйте RESTORE бэкапа на резервном сервере с последующим запуском CHECKDB там.

Частые вопросы (FAQ)

Почему DBCC CHECKDB требует много места на диске?

CHECKDB создает внутренний скрытый моментальный снимок базы данных (Database Snapshot) на том же томе, где лежат файлы данных, а также активно использует tempdb для сортировки и построения графов распределения страниц.

Что делает опция WITH TABLOCK при запуске CHECKDB?

Опция WITH TABLOCK указывает CHECKDB не создавать моментальный снимок базы, а накладывать прямые разделяемые блокировки таблиц (Shared Locks). Это экономит диск, но блокирует параллельную работу пользователей.

Как проверить базу объемом больше 5 TB без падения по ошибке 8989?

Разбивайте проверку по дням: используйте DBCC CHECKTABLE для отдельных таблиц по расписанию, либо запускайте DBCC CHECKDB ... WITH PHYSICAL_ONLY в рабочие дни и полную проверку в выходные.

Влияет ли параметр max degree of parallelism на CHECKDB?

Да, по умолчанию CHECKDB использует все доступные ядра CPU и масштабирует структуры в памяти. Ограничение MAXDOP = 2 или 4 предотвращает исчерпание памяти.

Полезные материалы
Рекомендуем