Файл базы данных поврежден в 1С 8.3: как исправить ошибку СУБД
Сообщение «Ошибка СУБД: Файл базы данных поврежден» — одна из самых неприятных ошибок файловой базы 1С: работа останавливается у всех пользователей. В статье разобрано, как устроены файлы базы, почему они портятся и в каком порядке восстанавливать 1Cv8.1CD, чтобы не потерять данные. Отдельно — короткая памятка для клиент-серверного варианта.
Как устроена файловая база 1С
Файловая база 1С — это каталог, в котором главное место занимает один файл 1Cv8.1CD. В нём хранится всё: конфигурация, данные справочников и документов, итоги регистров, пользователи. Платформа работает с ним как встроенная СУБД, поэтому любые сообщения о сбоях чтения или записи выглядят как «Ошибка СУБД». Кроме основного файла в каталоге обычно есть:
1Cv8tmp.1CD— временный файл, куда платформа складывает временные таблицы во время работы сеансов. После штатного закрытия всех сеансов он не нужен.1Cv8.cdn— файл блокировки, показывающий, что база используется.- каталог
1Cv8Log— журнал регистрации. - каталог
1Cv8FTxt(или похожий) — индексы полнотекстового поиска.
Ошибка «Файл базы данных поврежден» относится именно к 1Cv8.1CD (реже — к временному файлу). Она означает, что при чтении страницы файла платформа нашла несогласованные служебные структуры: битый индекс, оборванную цепочку страниц, неверную длину записи.
Почему файл базы данных повреждается
- Отключение питания и аварийное завершение. Если компьютер выключился посреди записи, часть страниц успела записаться, часть — нет.
- База на сетевом диске. Обрыв сети или «засыпание» сетевого подключения во время записи — классическая причина. Особенно опасны NAS с кешированием записи и сетевые папки через Wi-Fi.
- Антивирус и резервное копирование. Программа, которая блокирует или копирует
1Cv8.1CDна ходу, может помешать записи. Каталог базы стоит исключить из проверки в реальном времени. - Нехватка места на диске. При росте базы или при сжатии таблиц платформе нужно свободное место; если его нет, запись обрывается.
- Аппаратные проблемы. Сбойные сектора диска, умирающий SSD, ошибки памяти.
- Копирование базы во время работы. Копия, снятая при открытых сеансах, может оказаться внутренне несогласованной.
Как исправить: пошагово
1. Сделайте копию базы
Прежде чем что-либо исправлять, завершите все сеансы (проверьте, что в диспетчере задач нет процессов 1cv8.exe и 1cv8c.exe, работающих с этой базой) и скопируйте весь каталог базы в другое место. Если исправление пойдёт не так, у вас останется исходное состояние, с которым можно пробовать другие способы. Копию храните на другом физическом диске.
Если в каталоге остался 1Cv8tmp.1CD после аварии, при закрытых сеансах его можно удалить — иногда этого достаточно, если повреждён был именно временный файл.
2. Проверка утилитой chdbfl.exe
Утилита chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD и умеет исправлять типичные повреждения. Она входит в состав платформы и лежит в каталоге bin:
C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe C:\Program Files (x86)\1cv8\8.3.24.1548\bin\chdbfl.exe (32-разрядная платформа)
Порядок работы:
- Запустите
chdbfl.exeот имени пользователя, у которого есть права на запись в каталог базы. - В поле «Имя файла БД» укажите путь к
1Cv8.1CD. - Установите флажок «Исправлять обнаруженные ошибки». Без него утилита только покажет список проблем.
- Нажмите «Выполнить» и дождитесь окончания. На больших базах это может занять заметное время.
Если утилита сообщает, что ошибок не найдено или все исправлены, переходите к следующему шагу — физическая структура в порядке, но логические ошибки в данных могли остаться.
3. Тестирование и исправление информационной базы
Откройте конфигуратор и выберите «Администрирование → Тестирование и исправление». Опции, которые стоит включить:
- Реиндексация таблиц информационной базы — пересоздаёт индексы, частая причина ошибок именно в них.
- Проверка логической целостности и проверка ссылочной целостности — находят записи с некорректными полями и «битые» ссылки. Для битых ссылок выберите «Создавать объекты» или «Очищать ссылки» — первый вариант безопаснее, недостающие объекты потом можно разобрать вручную.
- Пересчёт итогов — восстанавливает таблицы итогов регистров.
- Сжатие таблиц информационной базы — физически пересобирает таблицы и уменьшает размер файла.
Режим выберите «Тестирование и исправление». То же самое можно запустить пакетно, если конфигуратор открывается только в режиме командной строки или нужно выполнить проверку по расписанию:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Trade" /N "Администратор" /P "" ^ /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -IBCompression -BadRefCreate ^ /Out "D:\Logs\trade-check.log"
После проверки откройте базу в режиме предприятия и посмотрите ключевые отчёты — остатки, взаиморасчёты. Если тестирование создало объекты-заглушки «Объект не найден», их нужно разобрать и заполнить.
4. Если не помогло: выгрузка .dt и новая база
Когда база открывается в конфигураторе, но ошибка продолжает появляться, выполните «Администрирование → Выгрузить информационную базу». Затем создайте новую пустую базу и загрузите в неё полученный .dt. При загрузке данные раскладываются заново, и многие скрытые повреждения исчезают. Если выгрузка прерывается на той же ошибке, вернитесь к шагам 2–3 на копии с другими опциями или восстановите базу из последней резервной копии.
rem Пакетная выгрузка и загрузка через конфигуратор "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Trade" /N "Администратор" /P "" /DumpIB "D:\Backup\trade.dt" "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\TradeNew" /N "Администратор" /P "" /RestoreIB "D:\Backup\trade.dt"
Для загрузки в новую базу каталог TradeNew должен содержать пустую созданную базу; её удобно создать заранее через окно запуска или командой 1cv8.exe CREATEINFOBASE File="D:\Bases\TradeNew".
Ошибка СУБД в клиент-серверной базе
В клиент-серверном варианте файла 1Cv8.1CD нет — данные хранит MS SQL Server или PostgreSQL, и текст «Ошибка СУБД» дополняется сообщением самой СУБД. Это может быть нехватка места в файлах базы или журнала транзакций, разрыв соединения с сервером СУБД, взаимоблокировка или физическое повреждение страниц. Порядок действий: прочитать полный текст ошибки, проверить журналы СУБД и свободное место на дисках, сделать резервную копию средствами СУБД. Для проверки физической целостности в MS SQL используется DBCC CHECKDB, в PostgreSQL — штатные средства проверки и переиндексации. Такие работы лучше поручить администратору СУБД; инструмент «Тестирование и исправление» в конфигураторе для клиент-серверной базы тоже работает, но физические повреждения страниц он не устраняет.
Профилактика
- Регулярные резервные копии: ежедневная выгрузка .dt или копирование каталога базы при закрытых сеансах, с хранением нескольких поколений.
- Источник бесперебойного питания для компьютера или сервера, где лежит база.
- Если базой пользуются несколько человек — размещение на локальном диске сервера с публикацией через веб-сервер или переход на клиент-серверный вариант вместо работы через сетевую папку.
- Исключение каталога базы из антивирусной проверки в реальном времени и из «горячего» копирования облачными клиентами.
- Контроль свободного места: на диске должно быть минимум в два-три раза больше места, чем занимает
1Cv8.1CD. - Периодическое тестирование с реиндексацией и сжатием таблиц в нерабочее время.
Частые ошибки
- Запуск chdbfl на единственном экземпляре базы без копии.
- Удаление
1Cv8tmp.1CDили1Cv8.cdnпри работающих пользователях. - Копирование базы с сетевого диска во время работы и попытка «починить» уже несогласованную копию.
- Использование chdbfl от другой версии платформы, чем та, с которой работает база.
| Ситуация | Инструмент |
|---|---|
| Файловая база не открывается, ошибка СУБД | chdbfl.exe с флажком «Исправлять обнаруженные ошибки» |
| База открывается, но ошибки в данных | Тестирование и исправление в конфигураторе |
| Повреждения остаются | Выгрузка в .dt и загрузка в новую базу |
| Клиент-серверная база | Журналы и средства проверки MS SQL или PostgreSQL |
Актуальность для новых версий
Порядок восстановления одинаков для всех релизов 8.3, включая 8.3.2x. Утилита chdbfl.exe по-прежнему входит в состав платформы и лежит в каталоге bin. В современных релизах используется формат файловой базы 8.3.8 с увеличенным размером страницы; базы старого формата при необходимости конвертируются через выгрузку и загрузку .dt. Перед любым исправлением сохраните копию каталога базы.
Частые вопросы
Можно ли удалить файл 1Cv8tmp.1CD?
Да, если с базой никто не работает и процессы 1С закрыты. Это временный файл сеансов, при следующем запуске платформа создаст его заново. При открытых сеансах файл трогать нельзя.
Где найти chdbfl.exe?
В каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe. Если установлено несколько релизов, берите утилиту той версии, которой открывается база.
Ошибка СУБД в 1С: в чём причина чаще всего?
Для файловой базы — аварийное завершение записи: отключение питания, обрыв сети при работе с базой на сетевом диске, вмешательство антивируса или закончившееся место на диске. В клиент-серверном варианте причину нужно искать в журналах самой СУБД.
Что делать, если chdbfl и тестирование не помогли?
Попробуйте выгрузить базу в .dt и загрузить в новую. Если выгрузка невозможна, восстановите последнюю резервную копию и повторно введите данные за период после неё.