Файл базы данных поврежден. Повреждено содержимое внутреннего файла "Описание базы данных"

Файл базы данных поврежден. Повреждено содержимое внутреннего файла "Описание базы данных"

Михаил MBX


"Не всё пропало" или Методика восстановления файловой базы, когда CHDBFL разводит руками

Привет! 

Предыстория

В конце октября 2022 поступила задача на восстановление файловой базы, которая была разрушена в процессе обновления конфигурации ИБ с долгой реструктуризацией, прерванной аварийно... :/

При запуске базы в любом режиме такое

CHDBFL после быстрой неуспешной попытки, сказал что "на этом его полномочия всё"

CHDBFL

Танцы под музыку

1. Tool_1CD при открытии повреждённой базы выдал кучу ошибок

(эта утилита и другие из следующих шагов подробно рассмотрены ТУТ)

Tool_1CD


2. restoration-base-1c8 у меня не взлетел, "Некорректная работа компоненты с памятью"


Так и не понял в чём причина, ни обойти, ни решить проблему не удалось

3. Попробовал вариацию на базе 1CDLib , была надежда на кнопку "Исправить заголовок БД" , но эффекта не дало

4. Решил вернуться к базовому исходному оригинальному варианту 1CDLib - и ЭТО ДАЛО СВОИ ПЛОДЫ!

Методика по шагам ниже

 

Требования

Для восстановления повреждённой базы обязательно понадобится рабочая копия повреждённой базы, этой или какой-то похожей. В моём случае была повреждена филиальная база сети РИБ, а для восстановления была использована копия другого узла РИБ месячной давности. То есть копия нужна, не обязательно прям от этой базы, но чем "ближе" она будет по дате и чем меньше будет конфигурационных структурных изменений по сравнению с разрушенной базой - тем выше процент восстановленных данных.

Предполагаю, что возможно подойдёт и пустая база в качестве донора, в которую предварительно был загружен CF от разрушенной базы (его можно получить, например, из Tool_1CD либо опять же из какой-то похожей базы, но скорей всего в этом случае процент восстановленных данных будет минимальный) 


Отказ от ответственности

Операция рискованная, выполняем только в крайнем случае, когда никаких других вариантов не осталось, делаем всё на свой страх и риск, автор статьи описывает исключительно свой реальный опыт, но ничего никому не рекомендует и не отвечает ни за какие последствия


По порядку

  1. Убеждаемся, что есть архив убитой базы. Сделать его лучше еще ДО запуска CHDBFL
  2. Готовим базы: в один каталог кладём "убитого" пациента, в другой разворачиваем рабочую копию
  3. Запускаем 1С (любую базу, можно вообще какую-то третью)
    Выгружаем с помощью 1CDLib всё из битой, но ценной базы (шаги 1 и 2)
Битая база. Делаем шаги 1 и 2. Шаги 3 и 4 - не надо

В каталоге с базой появляется подкаталог с данными повреждённой базы, выгруженными во вложенные подкаталоги-файлы

ценные данные повреждённой базы здесь


4. Аналогично выгружаем всё из базы донора (тоже пока только шаги 1 и 2)

5. Далее здесь же для базы-донора выполняем шаг 3, очищаем всё в работающем архиве, куда дальше будем накатывать нужные данные из битой базы

6. Теперь не закрывая обработку делаем важный шаг в Проводнике: Из каталога убитой базы переносим (обязательно с заменой) в каталог донора, всё кроме служебных таблиц, то есть выделяем для копирования/переноса каталоги с таблицами, которые начинаются с подчёркивания, остальные не надо. В моём случае я переносил всё, кроме этих (см скриншот)

эти должны остаться в каталоге данных повреждённой базы

7. Обязательно с заменой вставляем вырезанное в подкаталог базы-донора

с заменой все данные, кроме служебных, вставляем в каталог с данными базы-донора

8. Возвращаемся в 1С и дожидаемся завершения удаления таблиц из базы-донора, то есть ждём завершения пункта 5 данного списка

9. Когда каталоги объединены и данные из донора удалятся - нажимаем "Шаг 4. Восстановить" в том же сеансе

10. Если всё сделали правильно - загрузка в базу должна пройти без ошибок

11. После этого у меня открылся конфигуратор без ошибок, даже CHDBFL запускать не пришлось

12. Но Предприятие не запустилось, вылезла ошибка типа "Не найдено поле Т1._Fld1234"

13. Здесь мне помогло выгрузить базу в DT, и потом загрузить обратно, надеюсь, и у вас так же пройдёт

14. Вауля, открывается и конфигуратор, и "предприятие", нужные для нас данные оказались на месте, база снова в строю, проблем пока (уже месяц прошёл) не замечено! База работает, обновляется с реструктуризацией и тд

 

Благодарности 

Авторам всех перечисленных разработок, в особенности 1CDLib как инструменту, который таки сработал и спас наши данные!
А также светлая память Валерию "awa" Агееву , без которого, возможно, и не было бы всех этих методов восстановления...

 

Спасибо за прочтение! Всем мира! Здоровья вам и вашим базам! <3





2022-11-19


Report Page