gifts2017

"Файл базы данных поврежден" - мой опыт восстановления файла 1CD

Опубликовал Сергей Зарайкин (CXY) в раздел Администрирование - Тестирование и исправление

Хочу поделиться собственным опытом восстановления базы 1С. Кое-какие знания по проблеме я получил из форумов на Инфостарте, но кое-что пришлось додумывать самому. Но в результате база, которая не открывалась ни в Конфигураторе, ни во внешней утилите chdbfl, ни в программе Tool_1CD (первые четыре скриншота), в итоге была в моем случае ПОЛНОСТЬЮ ВОССТАНОВЛЕНА.

Надеюсь, мой опыт кому-то поможет при решении аналогичной проблемы.

Итак, изложу перечень своих проделанных действий по шагам:

1) Установил и запустил программу HxD, которая имеется в свободном доступе в Интернет, на русском языке (она очень удобна для очень больших баз, работает достаточно быстро);

2) В программе открыл битую базу, а также базу из бэкапа (к сожалению, довольно старого), разместил их мозаикой для удобства;

3) Нахожу смещение 00004000, где хранится параметр локализации, см. скриншот 5, исправляю его так, как в бэкапе;

4) Далее я вижу, что изменены данные в строках 00004020 и 00004030, исправляю их так, как должно быть, см. тот же скриншот, потом дальше иду вниз по строкам и вижу, что данные совпадают;

5) В строке 00004020 видно, что таблица CONFIG (в которой хранится описание базы данных), начинается с строки 00005000 (скорее всего у всех так), а вот заканчивается она у всех по разному. Чтобы узнать, где она заканчивается, в строке 00004020 надо считать 9,10,11,12 группу чисел-букв слева направо и прочитать эту группу чисел-букв справа налево. У меня выглядит вот так: 84 22 00 00, см. скриншот 6, 7. Это означает, что таблица CONFIGSAVE (следующая за таблицей CONFIG) начинается со строки 02284000 (таблица CONFIGSAVE не должна обязательно начинаться со слова CONFIGSAVE);

6) Копирую таблицу CONFIG со строки 00005000 по строку 02284000 (не включая эту самую строку, поскольку она принадлежит уже следующей таблице CONFIGSAVE) бэкапа в битую базу таблицы CONFIG со строки 00005000 по строку 02284000 (в редакторе: "скопировать и потом "вставить с заменой"). Результат изменений сохраняю;

7) Захожу в режим 1С Предприятие и открываю базу, как обычно.

 

P.S. Несмотря на то, что исправленная база прошла без ошибок "Тестирование и исправление базы" в Конфигураторе, я все же подстраховался и выгрузил из нее нужные мне данные обработкой ВыгрузкаЗагрузкаДанныхXML81(82).epf, которая входит в комплект поставки конфигурации Конвертация данных, а затем загрузил эти данные в бэкап, получив рабочую базу.

P.P.S. Конечно, лучше избегать подобных проблем путем регулярного сохранения бэкапов...

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Юрий Брусянцев (root901) 04.10.12 19:33
2. Agema (Agema) 04.10.12 21:10
Спасибо! буду иметь ввиду такой вариант восстановления базы. Сегодня прислали базу, с припиской, что ничем не могут исправить выгрузку, хотя и работает и обновляется, НО не выгружается и не тестируется (вылетает). Помог chdbfl.exe.
Кстати, вот Страница загрузки HxD v1.7.7.0 (03 Apr 2009)
3. Сергей Зарайкин (CXY) 05.10.12 05:07
Забыл указать еще один нюанс. В битом файле и файле бэкапа могут быть разные размеры таблицы CONFIG. Это может быть связано с тем, что были внесены изменения в конфигурацию. Тогда, если в битом файле будет возможно определить конец таблицы CONFIG (т.е. в смещении 4020 информация не будет затерта, и ее можно будет считать, в моем случае это было сделать нельзя), то при копировании таблицы CONFIG из бэкапа может остаться место до конца таблицы в битом файле. Так вот эти оставшиеся биты до конца таблицы надо ЗАПОЛНИТЬ НУЛЯМИ. В этом случае при запуске 1С: Предприятие конфигурация будет такая же, как в бэкапе, но с последними данными.
4. Владимир Клименко (KliMich) 05.10.12 10:42
Спасибо! Приму "на вооружение"
6. Сергей Зарайкин (CXY) 06.10.12 04:44
(2) Да, утилиты типа chdbfl и Toll_1CD несомненно облегчают решение проблем в лечении баз, но бывают случаи, когда они просто не могут открыть битую базу, как в моем случае. Конечно, моя ситуация - это частный случай, но если бы проблемы не были бы до конца решены, то конечно далее я бы использовал именно эти утилиты.
7. Lol Gop (Spas12) 06.10.12 17:56
За тему спасибо. Былабы эта тема немного на месяц пораньше пораньше тогда б быллобы всё гуд.
8. Shade (Shade) 07.10.12 15:48
Спасибо за ценный опыт :)
А точно ничего этим не портится?
9. Сергей Зарайкин (CXY) 08.10.12 02:38
(8)После всех своих манипуляций я проверил базу через "Тестирование и исправление" в Конфигураторе - никаких проблем не выявлено. Но чтобы уж точно подстраховаться от всех неожиданностей, я выгрузил из битой базы то, что мне нужно и загрузил в бэкап. Это действие, если проходит без ошибок, точно гарантирует беспроблемность последующей работы.
10. Валерий Агеев (awa) 08.10.12 14:01
Первые три скриншота с ошибками явно указывают на отсутствие в самом начале файла базы сигнатуры "1CDBMSV8", однако восстановление почему-то начинается с адресов 0x4000.
Либо часть лечения просто пропущена, либо скриншоты ошибки вообще от другого случая.


Вынужден извиниться, я поспешил с выводами.
11. Сергей Зарайкин (CXY) 08.10.12 15:56
(10) Прилагаю скриншот сравнения двух баз, начало файла. Выводы делайте сами...
Прикрепленные файлы:
12. Валерий Агеев (awa) 08.10.12 16:22
(11) Сорри, был не прав. Сообщение Tool_1CD "База не является информационной базой" означает, что в базе нет ни одной из таблиц CONFIG, CONFIGSAVE, PARAMS, FILES и DBSCHEMA, а не об отсутствии сигнатуры.
13. Сергей Зарайкин (CXY) 08.10.12 16:31
(12) Начал я лечение базы с адреса 0x4000 потому, что здесь и нашел параметр локализации (ru_ru), а именно этот параметр 1С не нашла при запуске и выдала сведения об ошибке.

P.S. Вам большой респект за утилиту Tool_1CD, очень полезная утилита, теперь держу постоянно при себе,
на всякий случай...
14. Дмитрий Воробьев (vde69) 09.10.12 00:06
Открытый проект по сабжу

кто хочет (и имеет опыт и желание) может присоеденится :)
15. Дмитрий Воробьев (vde69) 09.10.12 08:31
(0) данный способ я-бы не стал рекламировать, поднимать из копии фрагмент корневого - это не правильно (хотя в данном случае и прокатило), правильно будет полная перегенерация корневого. Для этого ищутся все внутрение файлы и по ним строим.... Даже если мы поднимем "мусорную" таблицу - это не страшно, выгрузка хмл будет нормально работать и при переносе в чистую выгрузится только то что нужно.


(0) кстати я эту базу получил от Романа, соответсвенно начало моего ответа (13 числа):

>>>у тебя забит нулями небольшой кусочек каталога корневого обьекта, с 4000h по 4040h
>>>
>>>это точно подлежит востановлению

Как я понимаю Вы знакомы :)))
Кстати по моему мнению сама 1с не могла испортить так корневой


(12)Tool_1CD без корневого не работает, кстати давай собери волю в кулак и доделай описание формата (про индексы), а то сейчас у меня только одна стратегия - грохать индексы :)
16. Сергей Зарайкин (CXY) 09.10.12 15:01
(15) Здравствуйте, vde69. Ваш комментарий меня заинтересовал в таком ключе:

"(0) кстати я эту базу получил от Романа, соответсвенно начало моего ответа (13 числа):

>>>у тебя забит нулями небольшой кусочек каталога корневого обьекта, с 4000h по 4040h
>>>
>>>это точно подлежит востановлению

Как я понимаю Вы знакомы :)))
Кстати по моему мнению сама 1с не могла испортить так корневой"

На самом деле база была разрушена 28 сентября 2012 года в одном розничном магазине, последний раз
я проводил профилактическое обслуживание 8 сентября 2012 (и все там было нормально). Затем наша фирма прекратила обслуживание данного магазина из-за денежных разногласий. Вместо меня действительно пришел
на обслуживание магазина Роман, но мы с ним абсолютно незнакомы. Но Роман ничего с базой сделать не смог, в итоге вызвали меня. В результате 4 октября в 14-00 база мною была восстановлена (до этого ночью пришлось как следует поработать, потому что я далеко не такой специалист, как Вы в части восстановления баз 1С :). Но у меня теперь к Вам такой вопрос: что же Вы могли обсуждать с Романом 13 числа?
17. Дмитрий Воробьев (vde69) 09.10.12 15:27
(16)видимо единичка примазалась, мое письмо было 3 октября 2012, 14:302

кстати про "финансовые разногласия" - охотно верю, владельцы базы явно "экономные"

Но и с другой стороны если Вы обслуживали, то должны понимать что если база 1.6 гига жмется до 200 метров в архиве - то нужно обслуживание, да и отсутствие свежих бекапов это то же Ваша вина :)

А за то, что не потерялись и востановили - однозначно Вам респект.

зы
и все-же я остаюсь при своем мнение "сама 1с не могла так испортить корневой"
18. Сергей Зарайкин (CXY) 10.10.12 03:41
(17) Бэкапы были, система их автоматического создания была настроена. Вот только последний бэкап был создан 10 сентября, а потом похоже на сервере был просто "убит" процесс, который за это и отвечал. 3 октября, когда я в магазине забирал базу для восстановления, так оно и было...
Что касается изменений в корневом - Ваше неоднократно высказанное мнение мне понятно... Я тоже задаюсь этим вопросом (у меня несколько версий). Для расстановки всех точек над "i" скажу, что например мне подобное сделать даже в голову не придет (я думаю, Вы понимаете, почему).
19. savastr (angele) 10.10.12 10:45
Очень полезный опыт. Когда-то была такая ситуация, но как лечил не помню, поэтому и опытом поделиться не могу. +1
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа