При выполнении процедуры Тестирование и исправление информационной базы (ТиИ) в клиент-серверном варианте работы можно столкнуться с критическим сбоем платформы: Ошибка SDBL: Быстрая вставка запрещена (не было вызова suspendIndexing()). Проблема чаще всего возникает на устаревших релизах платформы (включая линейку 8.2 и ранние версии 8.3) в высоконагруженных базах с большим объемом накопленных данных (например, в 1С:Управление производственным предприятием 1.3).
Разберем природу этого сбоя и рассмотрим пошаговые методы его устранения.
Выясним причину сбоя. Аббревиатура SDBL (Simple DataBase Layer) обозначает внутренний уровень абстракции платформы 1С, отвечающий за трансляцию запросов и операций с данными в команды конкретной СУБД (например, MS SQL Server). Ошибка вызвана внутренним программным сбоем в коде платформы:
suspendIndexing().Чаще всего сбой проявляется на тяжелых объектах: регистрах бухгалтерии, регистрах накопления, таблицах последовательностей документов и журналов с миллионами записей.
Проанализируем ситуацию: когда в окне Тестирование и исправление включены все флажки одновременно, платформа пытается выполнить весь комплекс регламентных процедур в одной сессии. Если на определенном этапе возникает ошибка, процесс прерывается целиком, не давая понять, какой именно объект поврежден.
Разберем правильный порядок действий:
Раздельный запуск снижает нагрузку на временные таблицы СУБД и во многих случаях позволяет успешно завершить тесты, которые падали при общем запуске.
Поскольку ошибка возникает на стыке 1С и СУБД, выполним регламентные операции на стороне MS SQL Server перед повторным запуском ТиИ:
DBCC CHECKDB ('ИмяБазыДанных') WITH NO_INFOMSGS, ALL_ERRORMSGS;
REBUILD) и полное обновление статистик для всех таблиц базы. Это нормализует планы выполнения запросов и внутренние структуры СУБД.tempdb достаточно свободного места для расширения.Если ошибка воспроизводится на этапе Пересчет итогов, разберем действия по оптимизации регистров накопления и бухгалтерии в режиме 1С:Предприятие:
Рассматриваемая ошибка в коде SDBL является официально зарегистрированным платформенным багом старых версий (в частности, платформы 8.2). В более поздних сборках линейки 1С:Предприятие 8.3 этот механизм был полностью переработан.
Для окончательного устранения проблемы переведем информационную базу на актуальный релиз платформы 1С:Предприятие 8.3:
УПП 1.3 стандартно используется режим совместимости с версией 8.2.13 или 8.2.16).suspendIndexing() выполняются корректно, и ошибка SDBL не воспроизводится.Иногда для решения ошибок предлагают выгрузить базу в файл .dt, загрузить в файловый вариант и провести ТиИ там. Обратим внимание: для крупных корпоративных систем (таких как УПП с базой объемом в десятки и сотни гигабайт) данный способ неприменим. Выгрузка в .dt может завершиться ошибкой нехватки памяти, а файловый формат 1CD имеет жесткое техническое ограничение на размер одной таблицы (не более 4 ГБ). Все регламентные процедуры для тяжелых баз следует выполнять непосредственно в клиент-серверном режиме.