Аварийное завершение реструктуризации таблицы базы данных 1С: решение
- Ошибка
Ошибка реструктуризации таблицы базы данныхпри принятии изменений в конфигураторе. - Сообщение СУБД:
The transaction log for database is full(MS SQL) илиNo space left on device / disk full(PostgreSQL). - Конфигуратор падает в процессе выполнения шага реструктуризации, база остается в состоянии
БД заблокирована для обновления. - Ошибка
Превышено время ожидания блокировки при реструктуризации таблицы _DocumentXXX.
1. Устранение нехватки дискового пространства и журналов СУБД
Реструктуризация тяжелых таблиц (регистры накопления, регистры сведений, документы) создает временную копию таблицы целиком (_DocumentXXX_tmp), что требует двукратного запаса дисковой памяти:
- MS SQL: переведите базу в режим восстановления
Simpleна время обновления и выполните сжатие лога транзакций (DBCC SHRINKFILE). - PostgreSQL: проверьте свободное место на диске с табличным пространством и директорией
pg_wal.
2. Снятие блокировки реструктуризации при аварийном прерывании
Если процесс реструктуризации упал, удалите флаг блокировки обновления в таблице _SystemSettings или выполните очистку через конфигуратор:
-- Для MS SQL: удаление блокировки обновления (выполнять только после остановки службы 1С!)
DELETE FROM dbo._SystemSettings WHERE _Key = 'DynamicUpdateInfo';3. Использование фоновой реструктуризации таблиц
В современных версиях платформы 8.3 используйте режим Фоновой реструктуризации, который не блокирует всю базу монопольно и выполняет миграцию порциями:
"C:\Program Files\1cv8\8.3.24.1667\bin\1cv8.exe" DESIGNER /S "server\ib_name" /N "Admin" /P "Pass" /UpdateDBCfg -Background -Server Частые вопросы (FAQ)
Почему реструктуризация таблицы регистра сведений занимает много часов?
При изменении типа данных ресурса или добавлении нового измерения платформа СУБД полностью перезаписывает все строки таблицы и перестраивает все связанные кластерные и некластерные индексы.
Что делать, если база зависла в процессе фоновой реструктуризации?
В конфигураторе через меню 'Конфигурация -> Управление фоновой реструктуризацией' можно оценить прогресс по каждой таблице, приостановить процесс или отменить его.
Как избежать реструктуризации больших таблиц при удалении устаревших реквизитов?
Вместо удаления реквизита переименуйте его (сделайте неиспользуемым) или удалите через механизм расширений, выполнив очистку данных регламентным фоновым скриптом заранее.
Влияет ли параметр autovacuum в PostgreSQL на скорость реструктуризации?
Да. Перед массовой реструктуризацией рекомендуется временно отключить autovacuum для изменяемых таблиц, а после завершения выполнить явный VACUUM FULL ANALYZE.