MSSQL Сообщение 8956: Repair The page has been released from database
- Информационное сообщение в отчете DBCC CHECKDB:
Repair: The page (1:67890) has been released from database ID 5. - После аварийного ремонта часть документов, проводок или справочников 1С исчезли.
- В 1С появляются ошибки
Объект не найден <...>(битые ссылки UUID). - Нарушение целостности последовательностей документов и регистров накопления.
1. Анализ журнала ремонта и определение затронутых объектов
Сообщение 8956 означает, что страница была полностью деаллоцирована (удалена из цепочки распределения). Найдите, какому объекту принадлежала страница:
-- Просмотр сохраненного протокола CHECKDB
-- Найдите Object ID и Index ID, предшествующие сообщению 8956 в логе2. Оценка масштаба потери данных
-- Проверка целостности ссылочной структуры 1С через T-SQL
-- Пример поиска битых ссылок в таблице движений регистра по несуществующим документам
SELECT r.Recorder, r.Period
FROM dbo._AccumRg123 r
LEFT JOIN dbo._Document456 d ON r.Recorder = d._IDRRef
WHERE d._IDRRef IS NULL;3. Запуск тестирования и исправления (ТиИ) в 1С:Предприятие
Для восстановления ссылочной целостности объектов выполните в Конфигураторе 1С:
- Откройте меню Администрирование -> Тестирование и исправление...
- Установите флаги:
- Проверка логической целостности;
- Проверка ссылочной целостности;
- При наличии ссылок на несуществующие объекты: Создавать объекты;
- При частичной потере данных: Создавать объекты.
- Нажмите Выполнить.
4. Восстановление утерянных записей из резервной копии
Разверните вчерашний бэкап в тестовую базу и перенесите утерянные объекты через обработку ВыгрузкаЗагрузкаXML.
Частые вопросы (FAQ)
Означает ли сообщение 8956, что база успешно починена?
Физически база стала консистентной для движка SQL Server (ошибки CHECKDB устранены), но логически в ней образовалась 'дыра' из-за удаленных данных, которые находились на освобожденной странице.
Сколько записей теряется при освобождении одной страницы 8956?
Ровно столько, сколько помещалось на 8 КБ странице. Для компактных регистров сведений это может быть от 50 до 300 записей; для строк с длинным текстом — от 1 до 10 записей.
Можно ли отменить операцию 8956?
Нет, если транзакция CHECKDB REPAIR была зафиксирована, вернуть удаленные данные можно только из резервной копии.
Как идентифицировать, какие именно документы 1С были удалены?
Сравните таблицы рабочей базы с архивной копией с помощью внешних обработок сравнения данных или SQL-запросов с оператором EXCEPT.