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

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

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

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

MSSQL Ошибка 8928: Page is out of bounds or corrupted

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка проверки базы: Msg 8928, Level 16, State 1: Table error: Object ID ..., index ID ..., page ID (1:54321). Page is out of bounds or corrupted.
  • Вместе с 8928 выводятся ошибки Msg 8976, Msg 8978 (нарушение связей между страницами B-Tree).
  • Выгрузка информационной базы 1С в файл .dt падает с ошибкой формата потока или ошибкой чтения таблицы.
  • Запросы SELECT к диапазону записей завершаются аварийно.

1. Локализация поврежденных данных

-- Проверка целостности конкретной таблицы
DBCC CHECKTABLE ('dbo._AccumRgT123') WITH ALL_ERRORMSGS;

2. Проверка заголовка страницы через DBCC PAGE

-- Включение вывода DBCC в консоль
DBCC TRACEON (3604);
-- Просмотр дампа заголовка страницы (File=1, Page=54321, Mode=3)
DBCC PAGE ('DatabaseName', 1, 54321, 3);
DBCC TRACEOFF (3604);

3. Спасение уцелевших данных таблицы в 1С / T-SQL

Если поврежден кластерный индекс (Index ID 1), скопируйте доступные строки в новую таблицу, обойдя поврежденный блок:

-- Создание копии структуры таблицы
SELECT * INTO dbo.Saved_Data_Table FROM dbo.Original_Table WHERE 1 = 0;

-- Построчное копирование через курсор или порционный перебор первичных ключей
-- (пропуская упавший диапазон ID)

4. Восстановление страницы из резервной копии

RESTORE DATABASE [DatabaseName] 
PAGE = '1:54321' 
FROM DISK = 'C:\Backup\FullBackup.bak' 
WITH NORECOVERY;

RESTORE LOG [DatabaseName] FROM DISK = 'C:\Backup\Log1.trn' WITH NORECOVERY;
RESTORE LOG [DatabaseName] FROM DISK = 'C:\Backup\Log2.trn' WITH RECOVERY;

5. Проведение DBCC CHECKDB REPAIR

ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('DatabaseName', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE [DatabaseName] SET MULTI_USER;
💡 Практика специалистов: Если база данных 1С сильно повреждена и CHECKDB удалил часть строк, используйте выгрузку конфигурации и данных через XML/XDTO обработку в чистую базу вместо продолжения работы на поврежденном экземпляре.

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

Что означает 'Page is out of bounds' в ошибке 8928?

Это означает, что номер страницы в цепочке IAM (Index Allocation Map) указывает на адрес за пределами физического размера файла базы данных (mdf/ndf) или заголовок страницы полностью затерт мусорными байтами.

Приведет ли REPAIR_ALLOW_DATA_LOSS к удалению данных при ошибке 8928?

Да. SQL Server освободит поврежденную страницу 8928 и перестроит указатели B-дерева. Все строки данных, находившиеся на этой 8-килобайтной странице, будут безвозвратно удалены.

Как восстановить данные в 1С после выполнения REPAIR_ALLOW_DATA_LOSS?

После ремонта базы запустите 'Тестирование и исправление' (ТиИ) в конфигураторе 1С с флагами 'Реструктуризация таблиц' и 'Создание объектов при наличии ссылок на несуществующие', чтобы устранить битые ссылки.

Может ли антивирус вызвать ошибку 8928?

Да, если антивирусное ПО сканирует файлы .mdf/.ldf без исключений, блокировка файловых дескрипторов или повреждение кэша записи драйвером антивируса может разрушить структуру страниц.

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