Как решить проблему переполнения базы данных 1С на MS SQL Express при обновлении?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При регулярном обновлении типовых конфигураций на платформе 1С, работающих под управлением SQL Server Express, администраторы нередко сталкиваются с критической ошибкой нехватки места. В частности, таблицы Config и ConfigSave начинают занимать практически весь доступный лимит в 10 Гб. Давайте разберем, почему это происходит и как устранить данную проблему совместными усилиями.

Почему растут таблицы метаданных?

Основная причина роста таблиц Config и ConfigSave кроется в режиме поддержки конфигурации. Когда для конфигурации включена возможность изменения, платформа 1С хранит не только основную версию, но и конфигурацию поставщика. Это необходимо для обеспечения механизмов сравнения и объединения. Даже если вы не вносили никаких правок, само наличие «разрешения на редактирование» провоцирует систему резервировать значительные объемы данных для управления версиями метаданных.

В процессе каждого обновления создаются временные копии структур, что приводит к «раздуванию» базы. Поскольку SQL Server Express имеет жесткое ограничение на объем (10 Гб), даже небольшая база данных с данными пользователей может мгновенно достичь этого предела из-за разросшихся таблиц конфигурации.

Способ №1: Переход на типовой режим конфигурации

Самый эффективный способ радикально уменьшить размер базы — это отказ от режима редактирования. Если у вас нет критических доработок в коде типовой конфигурации, выполните следующие шаги:

  1. Откройте конфигуратор вашей базы данных.
  2. Перейдите в меню Конфигурация — Поддержка — Настройка поддержки.
  3. Если конфигурация находится на поддержке с возможностью внесения изменений, измените статус на Объект поставщика или просто вернитесь к типовой конфигурации, сняв флаг «Разрешить изменения».
  4. После изменения статуса сохраните конфигурацию. Это приведет к удалению избыточных копий метаданных, которые хранились для нужд разработки.

После этой процедуры крайне важно выполнить тестирование и исправление информационной базы (с установкой всех галочек по реструктуризации) и последующее сжатие (Shrink) базы данных через SQL Server Management Studio, так как освободившееся пространство не вернется операционной системе автоматически.

Способ №2: Обновление через файловую версию

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

  1. Выгрузите текущую информационную базу в файл формата .dt.
  2. Создайте пустую файловую базу на диске с достаточным объемом свободного места.
  3. Загрузите выгруженный .dt файл в эту файловую базу.
  4. Выполните все необходимые обновления (накат 5-ти или более релизов) именно в файловом варианте. Файловый движок работает с метаданными иначе, и в процессе загрузки/выгрузки часто происходит «упаковка» таблиц, что позволяет значительно снизить итоговый размер.
  5. После успешного обновления выгрузите полученный результат обратно в .dt и загрузите его в SQL-базу.

Этот метод также полезен тем, что он ускоряет процесс обновления, так как файловая база не тратит ресурсы на накладные расходы SQL-транзакций при каждом изменении метаданных.

Способ №3: Проверка макетов и внешних данных

Часто размер базы увеличивается за счет включенных в конфигурацию внешних обработок, драйверов оборудования или тяжелых общих макетов печатных форм. Проанализируйте дерево конфигурации на предмет объектов, которые можно вынести во внешние файлы. Вместо того чтобы хранить тяжелые внешние отчеты внутри базы, лучше запускать их как Внешние отчеты и обработки. Это существенно разгрузит таблицу Config.

Дополнительные рекомендации по масштабированию

Если описанные методы не помогают, стоит рассмотреть переход на другие системы управления базами данных:

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

← На главную