Восстановление индексного файла таблицы зависает. Перестройка индексных файлов

08.03.2023

Наиболее распространенные ошибки 1С 7.7


1. ошибка открытия индексного файла таблицы 1SCONST. Для восстановления индексных файлов запустите программу в монопольном режиме .

Обычно, такое бывает при начальной установке баз. Решение подсказано)) Запускаем 1С в монопольном режиме. 1С проиндексирует базу и можно будет загрузить.

2. порядок сортировки отличается от системного .

Это ошибка чаще всего бывает при начальной установке 1С на операционные системы Windows Vista и Windows 7. Она связана с различными механизмами сортировки у операционной системы Windows и программы 1С Предприятие 7.7.

Тут есть два варианта.

2.1. У вас одиночный компьютер с Windows Vista/7 и 1С [b]или сетевая, но на всех компьютерах стоит Windows Vista/7.
В таком случае, надо изменить порядок сортировки для 1С Предприятие 7.7 в самой базе.

Делается так:
- Запускаем 1С в режиме конфигуратор Предприятия 7.7 ;
- Выбираете пункт "Администрирование " -> "Кодовая таблица страниц ИБ ";
- В списке выбираем самый нижний пункт - "Текущая системная установка ";
- ОК .

2.2 У вас многопользовательская версия, но работают в ней пользователи с разными операционками - Windows XP, Windows Vista, Windows 7.
В таком случае надо отключить проверку порядка сортировки.

Создаем маркерный файл с названием OrdNoChk.prm с любым содержимым. можно пустой;
- если у вас одна база, то можно кинуть этот файл к самой программе, т.е. в \\1Cv77\Bin\ Этим мы отключаем проверку порядка сортировки в программе 1С. Но касаться это будет всё равно всех баз.
- если же у вас баз много, то лучше кидать этот файл в папку с базой. Тогда отключение проверки порядка сортировки будет касаться только этой базы, где находится этот маркерный(или же сигнальный) файл. Скажем, у вас три базы. С двумя базами работают в Windows XP, а с третьей - с разных систем. Тогда, если кинем маркерный файл только к третьей базе, то с третьей базой смогут работать с разных систем.

Почему же не кинуть файл OrdNoChk.prm в BIN и не отключить проверку порядка сортировки сразу для всех баз?
Потому что:
- данный способ работает только начиная с 26-ой платформы и выше;
- 1С предупреждает: "Применение данной возможности может быть рекомендовано только в крайних случаях, когда не имеется возможности согласовать системный порядок сортировки с порядком сортировки, устанавливаемым для информационной базы. При отключении проверки порядка сортировки в условиях применения компоненты управления распределенными информационными базами НЕ СЛЕДУЕТ использовать символы любых алфавитов, кроме латинского, в трехбуквенном идентификаторе информационных баз, входящих в состав распределенной. Следует иметь в виду, что 1С:Предприятие при работе использует возможности по сортировке обоих механизмов, и отключение проверки идентичности порядка в них может привести к неожиданному для пользователя порядку следования строк, например, при формировании отчетов ".

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

Такой подход, кажется более гибким и правильным.

К тому же, следует помнить следующее!

Базы желательно располагать на машине с Windows XP, а OrdNoChk.prm поместить в папку BIN на машине с Windows 7 (Vista). Это позволит избежать потенциальных проблем с работой таких компонент как УРИБ . При этом следут помнить, что машину с Windows 7 (Vista) можно использовать только для работы в режиме 1С Предприятие.
Любые изменения в режиме Конфигуратора должны вносится только на машине с Windows XP .
При расположении баз на машине с Windows 7 (Vista) обязательно следует привести кодовую страницу ИБ к системной (по первому способу), а OrdNoChk.prm использовать уже на машинах с Windows XP, в противном случае работа с УРИБ или просто загрузка ранее выгруженных данных в ИБ будут невозможны.

3. Ошибка при создании из компоненты V7Plus.dll (Отсутсвует CLSID)

Такая ошибка проиходит из-за того что в операционке не зарегистрированы библиотеки. В данном случае - V7Plus.dll .
1С регистрирует библиотеки динамически, т.е. при первом обращении в нужной библиотеке.
Но не может.
Обычно это происходит из-за отсутствия прав, или при включенном UAC (в Windows Vista/7). При включенном UAC 1C работает с правами пользователя и следовательно зарегистрировать библиотеку не может.
Есть два варианта решения:
- копируем V7Plus.dll (или нужную библиотеку) в папку BIN 1С (чтобы не привязывать к конкретной базе) и один раз запутить 1С от имени Администратора, или от учетки с правами администратора. Так как запускается с правами админитратора - то и зарегистрируется библиотека.
- зарегитрировать вручную. Для этого запускаем командную строку с правами администратора и даем команду regsvr32 \BIN\V7Plus.dll , результатом выполнения должно быть сообщение об успешной регистрации библиотеки.

4. Ошибка "Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше .

Ошибка возникает при попытке запуска SQL версии 1С Предприятие 7.7 на Windows 7 (Vista) и заключается в отсутствии поддержки этими ОС версий SQL сервера ниже SQL Server 2005 SP2.

Выдержка из официального пресс-релиза Microsoft:
Для обеспечения более высокого уровня безопасности, операционные системы Microsoft Windows Server 2008 и Microsoft Windows Vista будут поддерживать выпуск SQL Server 2005 Express с пакетом обновлений 1 (SP1), а для всех остальных выпусков SQL Server потребуется SQL Server 2005 с пакетом обновлений 2 (SP2) или более поздняя версия. Более ранние версии SQL Server, включая SQL Server 2000 (все выпуски, включая выпуск Desktop Engine, так же известный как MSDE), SQL Server 7.0 и SQL Server 6.5, операционными системами Windows Server 2008 и Windows Vista поддерживаться не будут .

Решения на сегодняшний день не существует (и вряд ли оно появится).

В качестве альтернативного варианта можно посоветовать запуск 1С Предприятия на Windows Server 2003 в терминальном режиме, этот же вариант мы рекомендуетя и для файлового режима 1С в сети с различными версиями Windows.

Рано или поздно в жизни любого пользователя 1С наступает тяжелая минута, когда любимая программа отказывается иметь с ним дело, не запускаясь вовсе или выдавая зачастую невразумительные для человека неискушенного сообщения. Итак, что нам пытается сказать 1С и что мы можем для нее сделать?

1. «Ошибка загрузки метаданных»

2. «Порядок сортировки, установленный для базы данных, отличается от системного!»

Данная ошибка возникает в случае, когда системная кодировка и кодировка информационной базы различны (см. http://www.goto1c.ru/2011/04/ordnochkprm.html).

3. «Ошибка блокировки данных»

Ваша база используется в монопольном режиме (возможно, это Вы сами). Для устранения этой проблемы необходимо закрыть сеанс «1С:Предприятие» с монопольным доступом к базе и зайти в разделенном режиме. Если 1С: Предприятие в монопольном режиме запущено не на Вашем компьютере, то возможны два варианта действий.

Первый вариант применим, если компьютеров в сети, использующих 1С: Предприятие, немного или они расположены недалеко друг от друга. Выбрав на каждом компьютере пункт меню 1С:Предприятие Помощь -> О программе, Вы увидите в строке Режим работы . Если слева написано «Монопольный», то нужно закрыть 1С:Предприятие на этом компьютере.

Второй вариант нужно применять тогда, когда компьютеров в сети много. Тогда нужно запустить Монитор командой Пуск ->Программы->1С: Предприятие->Монитор пользователей. Запустив монитор, нужно выбрать пункт меню Монитор ->Активные пользователи. Перед Вами появится список компьютеров, с которых на данный момент используется база (каждая строка – запущенная компонента 1С: Конфигуратор, Предприятие, Монитор, Отладчик). Если Вы обратите внимание на самый левый столбец, увидите, что на одном из компьютеров запущено 1С: Предприятие в монопольном режиме (это отображается красным восклицательным знаком рядом с иконкой). Подойдите к этому компьютеру и закройте там 1С: Предприятие. Проблема теперь должна быть решена.

Иногда возможен вариант, что какой-то компьютер некорректно завершил работу (или просто «завис»), тогда нужно выключить его и включить еще раз. Если невозможно определить, какой компьютер занял базу, а в Мониторе не указан компьютер, использующий монопольный режим, то придется найти и завершить процесс 1cv7.exe в Диспетчере задач Windows или выключать все компьютеры (можно по одному, пробуя запустить 1С после выключения каждого компьютера).

4. «Каталог пользователя занят»

5. «Каталог базы не обнаружен»

Это произошло из-за того, что недоступна папка, в которой находится база 1С. Если база находится на Вашем компьютере, то, скорее всего, Вы ее куда-то переместили. Вспомните, перемещали ли Вы какие-либо каталоги (папки) в последнее время. Если Вы знаете точно, куда была перемещена база, то при запуске 1С в диалоговом окне выберите кнопку «Изменить» (справа идут кнопки ОК, Отмена и следующая – «Изменить»). Укажите новый путь к базе и, нажав на кнопку ОК, запустите 1С: Предприятие еще раз.

Если база находится не на вашем компьютере, а на удаленном сервере, то лучше обратиться за помощью к человеку, который отвечает за работоспособность компьютеров в Вашей фирме. Если Вы все же решили самостоятельно ликвидировать проблему, то, во-первых, необходимо проверить наличие сети между двумя компьютерами (Вы можете просто проверить наличие компьютера-сервера в списке доступных для клиента компьютеров, кликнув на иконке «Мое сетевое окружение»). Во-вторых, нужно узнать местонахождение каталога с базой на сервере. После этого, кликнув на кнопку «Изменить» в диалоговом окне запуска 1С:Предприятие, выберите «Мое сетевое окружение»->Сервер, на котором находится база ->Укажите путь к базе.

6. «Ошибка открытия индексного файла таблицы. Для восстановления индексных файлов запустите программу в монопольном режиме»

Для решения этой проблемы нужно запустить программу в монопольном режиме (поставьте галочку в поле «Монопольно» при запуске программы). Конечно, предварительно придется попросить всех пользователей выйти из 1С: Предприятие. На предложение восстановления индексных файлов нужно ответить утвердительно. Этот процесс может занять значительное количество времени, от 1-2 минут для баз в 5-10 мегабайт до порядка часа для больших баз. Если Вам не удается запустить систему в монопольном режиме, хотя Вы уверены, что все пользователи вышли из программы, то сначала проверьте свой компьютер, возможно, там осталась запущенная копия программы. Если и это не помогло, то попробуйте выключить клиентские машины (можно по одной, с проверкой после каждой). Вероятно, что одна из программ была некорректно завершена и не освободила базу.

7. «Поврежден файл журнала регистрации»

В каталоге Вашей базы (путь к базе написан внизу в окне запуска) есть подкаталог Syslog . В этом каталоге лежит файл 1cv 7.mlg , это и есть файл журнала. Переместите его в другой каталог; если Вы считаете, что файл журнала Вам не нужен, то можете его удалить. Главное - убрать файл журнала из этого каталога. При следующем запуске 1С: Предприятие должна успешно загрузиться и создать пустой файл журнала.

8. При запуске программы появляется всплывающий экран с надписью 1С:Предприятие и тут же исчезает.

Данная ошибка проявляется в случае, если платформа обнаруживает файлы для запуска, но у текущей учетной записи (учетная запись операционной системы, не путать с учетной записью "1С:Предприятие") нет прав доступа к каталогу, где находится информационная база. 1С: Предприятие для запуска необходима запись в этот каталог. Чтобы исправить ситуацию с сервера, на котором находится база, выберите общий ресурс (диск или каталог с базой), щелкните правой кнопкой, выберите меню Свойства, вкладку Доступ, поставьте значение Полный (или переставить индикатор в «Открыть общий доступ к папке» для Windows 2000). Сохраните изменения, попробуйте запустить 1С: Предприятие еще раз.

9. «Runtime Error! Program c:\Program Files\1Cv77\Bin\1Cv77.exe. Abnormal termination»

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

a)Перезагрузите компьютер.

b)Переустановите 1С: Предприятие.

c)Скопируйте файл 1Cv 7.md , который лежит в каталоге NEW _STRU Вашей базы в каталог с базой. Например, если Ваша база лежит в каталоге c :\1C \base , то нужно скопировать файл 1Cv 7.md из c :\1C \base \NEW _STRU в c :\1C \base . На вопрос: «Заменить ли текущий файл?» следует ответить «Да».

d)Запустите Конфигуратор, выберите пункт Администрирование -> Тестирование и исправление ИБ. Нажмите на кнопку Выполнить.

10. «Невосстановимая ошибка базы данных. Код – 10. Ошибка открытия словаря базы данных»

Скопируйте файл 1Cv7.dd, который лежит в каталоге NEW_STRU Вашей базы в каталог вашей базы. Например, если Ваша база лежит в каталоге c:\1C\base, то нужно скопировать файл 1Cv7.dd из c:\1C\base\NEW_STRU в c:\1C\base. На вопрос: «Заменить ли текущий файл?» следует ответить «Да». Если такого файла в каталоге NEW_STRU не существует, но Вы знаете пароль на конфигурацию, то можно исправить проблемы, переименовав какой–либо объект метаданных самого в себя (например, в идентификаторе константы ОснФилиал стереть последнюю букву «л» и снова ее поставить). Сохраните конфигурацию.

11. Ошибка доступа к таблице DT*

Превышено максимально допустимое количество одновременно открытых файлов в Windows 9x.

Дело в том, что Windows 95/98 позволяют одновременно открывать не более 1024 файлов. Это ограничение вступает в силу, если в сетевом режиме работы база лежит на расшаренном диске компьютера, работающего под управлением Windows 95/98. При запуске 1С каждый подключившийся пользователь открывает все.dbf и.cdx файлы, входящие в состав конфигурации. В зависимости от сложности конфигурации, одновременно работать с 1С в таком режиме могут 3-6 пользователей.

Если Вы столкнулись с такой проблемой, следует использовать в качестве файл-сервера (т.е. компьютера, на котором хранится каталог информационной базы) компьютер с WinNT/2000/2003. Надо только иметь ввиду, что WinNT Workstation (2000 Professional) не имеет ограничения на количество открытых файлов, но допускает не более 10 одновременных подключений. Т.е. с базами на таком компьютере смогут работать одновременно не более 10 пользователей. Если требуется работать большему количеству пользователей одновременно, то есть смысл рассматривать вариант с выделенным сервером и операционными системами Windows 2000/2003 Server.

Если Вы перенесли базу на Windows 2003 Server, и у Вас продолжает появляться та же ошибка, то проверьте количество лицензий на подключение пользователей (компьютеров) в Win Server 2003 – там по умолчанию стоит всего 5.

12. "Не обнаружен ключ зашиты программы"

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

Мы предлагаем Вам выполнить следующие действия. После каждой попытки, пожалуйста, попробуйте запустить 1С: Предприятие. Возможно, что проблема решится на первом же шаге, и тогда все последующие будут не нужны.

a ) Перезагрузите компьютер, нажав Пуск->Завершение работы ->Перезагрузить компьютер ->ОК. Подождите, пока компьютер перезагрузится, затем еще раз попробуйте запустить 1С.

b ) Возможно, Вы забыли установить драйвер защиты при установке программы. Тогда Вам нужно запустить его, нажав Пуск ->Программы->1С: Предприятие 7.7->Установка драйвера защиты. Перезагрузите компьютер и попробуйте еще раз запустить 1С: Предприятие. Если же по каким-то причинам драйвер не был установлен, то установите его с прилагаемого к программному обеспечению диска или скачаете с сайта http://www.aladdin.com/support/hasp/hasp4/enduser.aspx.

c ) Проверьте физическое наличие ключа на компьютере, может быть, он выскочил из компьютера. Для этого нужно добраться до задней стенки корпуса компьютера, туда, куда подключаются провода. Важно: крайне рекомендуется предварительно выключить компьютер. Ключ выглядит как брусок примерно 3х4х1 см. Скорее всего, он будет красного или белого цвета. Ключ вставляется в LPT порт (туда же, куда и принтер). В любом случае, Вы сможете вставить ключ только в LPT порт. Важно: не нужно прилагать большую силу, усилия должны быть сравнимы с усилиями при поднятии стакана чая. Если ключ не входит в порт, не пытайтесь вставить его силой, так как либо это не ключ, либо Вы вставляете его не в LPT порт. Лучше позовите человека, отвечающего в Вашей фирме за компьютеры. После того как Вы вставили ключ в порт, включите компьютер и попробуйте снова запустить 1С: Предприятие.

d ) Иногда принтер и другая техника, поставленная «поверх» ключа может мешать его определению сервером защиты. Предварительно выключив компьютер и принтер, попробуйте отсоединить периферию (чаще всего принтер) от компьютера, оставив ключ на месте. Теперь включайте компьютер и попробуйте запустить 1С. Конечно, в этом случае, вы не сможете пользоваться отключенным устройством.

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

a ) Проверьте то, что проблемный компьютер «видит» сервер, на котором находится ключ. Можно либо пропинговать сервер из командной строки, запустив программу ping с проблемного компьютера с именем компьютера-сервера в качестве параметра. Например, c : ping server 1c . Либо Вы можете просто проверить наличие компьютера-сервера в списке доступных для клиента компьютеров, кликнув на иконке «Мое сетевое окружение». Если выяснится, что проблемный компьютер не «видит» сервер, то понадобится провести стандартную проверку при сетевых проблемах. Рекомендуем начать с проверки целостности кабелей (нет обрывов), работоспособности хаба, работоспособности сетевой карточки, кроме того, следует убедиться в наличии необходимых протоколов и правильности их настройки.

b ) Убедитесь в том, что на компьютере с ключом запущена программа «Сервер защиты». Это программа необходима для работы клиентов 1С: Предприятие в сетевом варианте. Вы можете запустить ее, нажав Пуск ->Программ->1С: Предприятие 7.7-> Сервер защиты.

c ) На каждом компьютере с 1С: Предприятие есть файл nethasp .ini , который по умолчанию находится в C :\Program Files \1Cv 77\BIN . В этом файле содержатся настройки программы, проверяющей наличие ключа в сети. Файл достаточно хорошо документирован, и Вы, наверняка, сможете разобраться в его структуре. Мы рекомендуем Вам обратить особое внимание на строки используемых протоколов (возможно, там остался один IPX /SPX , который вообще в вашей сети не используется), время ожидание поиска ключа (при слабой сети программа может просто не успеть найти его) и ссылки на компьютер сервер (возможно, такого компьютера уже не существует, он перемещен или переименован).

Возможно, аппаратный ключ защиты "приказал долго жить". В этой ситуации нужно обратиться к вашему поставщику программного обеспечения и написать заявление на обмен ключа защиты. Или же ваша копия "1С:Предприятие" вообще не имеет данного ключа. Ведь ключ поставляется только с лицензионным программным обеспечением.

В статье были использованы материалы с сайтов http://help1c.com, http://www.ititi.ru, http://it-specialist.perm.ru.


Вступление

Был летний солнечный день и ничто не предвещало беды, когда зазвонил телефон и сотрудница на другом конце сообщила: "Похоже я убила базу клиента". После допроса с пристрастием выяснилось следующее: на обычном удаленном рабочем столе (RDP) проводилось обновление конфигурации с реструктуризацией базы, таких обновлений делается по тысячу пятьсот раз на дню. Однако, в этот раз пошло, что-то не так и база данных рухнула.

При повторном запуске программа выдавала сообщение

и после этого вываливалась в Windows. Наличие резервной копии позволило бы восстановить базу в два счета, но человеческая беспечноть сотрудницы, которая не потратила лишних пару минут для ее создания привела к тому, что исправление проблемы заняло около четырех дней, было сделано несколько неправильных шагов, которые не приводили к значимому результату. Ниже я описываю правильный путь.

Восстановление базы


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

Шаг №1. Делаем резервную копию испорченной базы

Помимо просмотра списка таблиц, там есть важная для нас функция выгрузки конфигурации. Запускаем утилиту, открываем базу. База открылась без сообщений об ошибок, это хороший знак!

Шаг №3. Анализируем структуру файла испорченной базы

Итак, как вам известно CD файл - это по сути хранилище файлов-таблиц. Открываем Hex редактор (например опенсорсный http://en.wikipedia.org/wiki/HxD), переходим по ссылке 0x4000. Тут находится таблица смещений основных таблиц базы данных и конфигурации.

Лирическое отступление

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


Итак взглянем на таблицу из HEX редактора:

На этой картинке в левой части показан HEX редактор в правой части список таблиц из утилиты Tool_1CD. Их порядок совпадает с тем как они идут в файле CD. Здесь мы видим, что таблица CONFIG начинается с адреса 0x5000 и оканчивается на 0x31F0FFF, где следом начинается таблица CONFIGSAVE по адресу 0x31F1000 (для тех кто никогда не программировал на ассемблере скажу, что в машинных кодах числа пишутся с права на лево - пережиток царского режима). Строго говоря, 0x5000 расположен заголовок таблицы CONFIG, который ссылается еще на один заголовок, а потом уже следует сама таблица (см. описание формата файлов по ссылке выше). Разумно предположить, что если 1С ругается на конфигурацию, стало быть именно эту таблицу нам надо исправить, для этого надо выцепить таблицу CONFIG из сохраненной конфигурации (или если она не сохраняется, взять конфигурацию максимально близкой к испорченной) и подставить ее по адресу 0x5000, но при этом таблица не должна выходить за пределы 0x31F0FFF.

Upd 10/10/2012

Важное замечание :

1С обращается к таблицам по имени, и ей не важно, какая таблица находится в списке первой, какая второй и т.д. Просто при создании новой базы 1С создает нужные таблицы друг за другом в том порядке, в каком это создание написали программисты 1С. Поэтому всегда и получается, что CONFIG идет первой, CONFIGSAVE второй и т.д. Но если бы первой таблицей была бы какая-нибудь _REFERENCE152, а CONFIG была бы семнадцатой в списке, 1С спокойно бы работала с такой базой.


Шаг №4а. Загружаем в пустую конфигурацию выгруженную конфигурацию (извините за каламбур)

Загрузили. Записали. Смотрим в HEX-редакторе


Так-с, что-то не то, какая-то новая таблица добавилась. Отсюда вывод: Восстановление нужно делать на том же релизе платформы, что и испорченная база.

Шаг №5б. Загружаем в пустую конфигурацию выгруженную конфигурацию той же самой версии платформы

Смотрим результат:

Да-а, результат тоже не очень. Таблица CONFIG заканчивается по адресу 0x10FFF, судя по всему она не реструктуризирована. Ладно попробуем скопировать рабочую таблицу Tool_1CD в нерабочую базу. Выделяем блок в рабочей базе и копируем с замещением по адресу 0x5000 в испорченную базу:


Открываем Tool_1CD, открываем испорченную базу, но увы Tool_1CD виснет при попытке посмотреть таблицу CONFIG. После нескольких не правильных шагов, мне пришла идея: а что если 1С структурирует таблицы при загрузке базы? Тогда остается сделать выгрузку и загрузку базы с рабочей конфигурацией.

Шаг №5в. Загружаем в пустую конфигурацию выгруженную конфигурацию той же самой версии платформы, делаем выгрузку и загрузку базы (не конфигурации!).

Посмотрим как сейчас выглядят смещения:

Уже лучше. Теперь CONFIGSAVE расположена по адресу 0x31FC000, что больше чем 0x31F1000. Как же скопировать больший блок таблицы CONFIG в рабочей базе на меньший блок в испорченной базе? Ответ прост: надо удалить метаданные в рабочей конфигурации, не влияющие на ее структуру: общие модули, картинки, отчеты, обработки и т.п. Нам важно запустить испорченную базу, конфигурацию мы потом восстановим.

После нескольких итераций удаления, выгрузки и загрузки базы, я получил следующую картину:

Наконец-то: CONFIGSAVE начинается с 0x313B0000<0x31F1000. Теперь выделяем блок 0x5000- x313AFFF в рабочей базе и в адрес 0x5000 в испорченной базы копируем с замещением

Записываем. Открываем 1С. Отклично, все заработало.

Upd 10/10/2012

Важное замечание

Как правило по смещению 0x4000, содержатся ссылки на файлы описания таблиц. А уже в файлах описания таблиц содержатся ссылки на таблицы записей, индексов и BLOB. В общем случае, если таблица CONFIG "начинается" с адреса 0x5000, а таблица CONFIGSAVE с адреса 0x31f1000 и нет никакой гарантии, что на промежутке от 0x5000 до 0x31f1000 не содержится ни одного блока, относящегося к любой другой таблице, помимо CONFIG. В большинстве случаев таблица CONFIG не фрагментирована, объясняется это, думаю, тем, что такое расположение файлов одной таблицы друг за другом, так, что вся таблица как бы находится в файле 1CD одним непрерывным куском, образуется в результате применения сжатия базы данных при тестировании и исправлении или при применении утилиты chdbfl.exe.

Осталось только загрузить в базу рабочую конфигурацию, чтобы восстановить рабочую базу. Все, База восстановлена.

P.S. Разумеется данный случай описывает исправление простых поломок, однако даже такой простой случай может ставить в тупик опытных профессионалов, когда не существует типовых способов решения проблемы. Не забывайте делать резерные копии.

Бывают ситуации, когда таблица или индекс могут повредиться. Это может быть обусловлено изменениями в mysql или в наборе обрабатываемых данных. Например, ошибка в сортировке, требуется восстановить таблицу для обновления индексов для символьных столбцов, которые используют параметры сортировки. Так же восстановление таблиц может потребоваться после проверки целостности таблиц коммандами CHECK TABLE , mysqlcheck или mysql_upgrade.

Для восстановления, пересоздания таблиц в случает обновления БД mysql или понижения версии используйте только метод dump-and-reload (создание бэкапа таблицы с последующем восстановлением из него). Таким образом прежде чем обновлять базу mysql или понижать версию БД, необходимо создать дамп базы данных, например используя mysqldump. После обновления или понижения версии восстановить базу из файла дампа. Если Вы используете этот метод только для пересоздания индексов, то дамп и восстановление, можно делать как до так и после обновления или отката версии.

Чтобы пересоздать таблицу использую дамп и восстановление выполните следующие действия:

mysqldump db_name table1 > dump_table.sql

mysql db_name < dump_teble.sql

Для восстановления всех таблиц нет необходимости их перечислять, используйте следующие комманды:

mysqldump db_name > dump.sql

mysql db_name < dump.sql

Для восстановления всех таблиц во всех базах данных mysql используйте опцию —all-databases

mysqldump —all-databases > dump.sql

mysql < dump.sql

Для пересоздания таблицы с помощью команды ALTER TABLE не изменяйте механизм хранения, используйте тот, что уже имеется, например lдля MyIsam:

ALTER TABLE table1 ENGINE = MyISAM

Если Вы не уверены в том какой механизм хранения используется для таблицы Вы можете это узнать выполнив команду:

SHOW CREATE TABLE для отображения параметров таблицы.

Если необходимо пересоздать таблицу, поскольку проверка таблицы выдала сообщение о том, что таблица повреждена используйте команду: REPAIR TABLE , только если данный тип хранения таблицы поддерживает эту операцию. Например MyISAM поддерживает, поэтому выполняем:

REPAIR TABLE table1

Для систем хранения таблиц InnoDB, REPAIR TABLE не поддерживается . Для пересоздания и восстановления таких таблиц используйте mysqldump для создания дампа с последующим его восстановлением, как было описано вначале.

mysqlcheck —repair — предоставляет возможность восстановления таблиц аналогично REPAIR TABLE, только данное выражение удобнее так как можно использовать опции —databases или —all-databases для починки сразу всех таблиц в конкретных базах данных и во всех базах данных mysql соответственно:

mysqlcheck —repair —databases db_name1 db_name2 …

mysqlcheck —repair —all-databases

В MySQL 5.1.24 присутствует ошибка Bug #27877 utf8_general_ci and ucs2_general_ci кодировки (сотрировки), он был исправлен в версии MySQL 5.1.62, 5.5.21 и 5.6.5. Установите любую из версий с исправлением, затем конвертируйте таблицы используя один из следующих методов:

    Измените кодировку (сортировку) на utf8_general_mysql500_ci и ucs2_general_mysql500_ci, что соответствует utf8_general_ci and ucs2_general_ci в версии MySQL 5.1.24

    Для преобразования таблиц пострадавших после обновления измените настройки используя новые значения параметра сортировки. Предположим таблица содержит один или несколько проблемных столбцов utf8. Для преобразования таких таблиц используйте команду:

    ALTER TABLE table1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;

    Для применения изменений для столбцов используйте такуюже команду только без COLLATE:

    ALTER TABLE table1 MODIFY c1 CHAR(N) CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;

    Для обновления с помощью процедуры дампа и восстановления. Создайте файл дампа, измените в нем кодировку для выражений CREATE TABLE , это можно сделать авто заменой, затем восстановите из фала дампа.

После проделанных исправлений CHECK TABLE не должна выдавать ошибок.

Если у Вас проблемы с Базой данных mysqlи Вы не можете их решить, обращайтесь к нам (контакты), мы с радостью Вам поможем.

Открыть индексный файл можно только в том случае, если ранее открыт соответствующий табличный файл. В противном случае будет выдано сообщение об ошибке. Для открытия индексного файла надо подать команду:

SET INDEX TO [список индексных файлов]

[ОР< cd х-файл>]]

Назначение опций такое же, как в командах USE и INDEX ON.

Открыть существующий индексный файл можно одновре­менно с открытием табличного файла командой USE (см. п. 2.2 «Открытие таблицы»).

Для закрытия всех индексных файлов надо подать одну из ко­манд: либо SET INDEX TO без опций, либоCLOSE INDEX.

Замена текущего индекса

Для каждой таблицы одновременно может быть открыто не­сколько индексных файлов, но текущим (активным) будет толь­ко один индекс. По умолчанию принято, что текущим будет первый по порядку индекс в том индексном файле, имя которого указано первым в списке имен индексных файлов команды USE или команды SET INDEX TO.

Текущим можно сделать любой индекс из текущего индекс­ного файла с помощью команды

SET ORDER TO

[<выр. N 1> | < id х-файл> | ]

[ ASCENDING | DESCENDING ]

Назначение опций:

<выр.Nl> - задает текущий индекс по его порядковому номеру в мультииндексном файле.

- делает текущим одноиндексный файл.

TAG <имя тега> - задает текущий индекс по имени тега из указанного мультииндексного файла. Если опция опущена, то тег выбирается из текущего муль­тииндексного файла.

IN <выр.N2> - указывает номер рабочей области, в которой на­ходится индексный файл. Опция используется в том случае, если табличный файл открыт в одной рабочей области, а индексный файл - в другой рабочей области.

Текущим индекс также можно сделать с помощью диалоговой панели Table Designer, переместив строку описания нужного ин­декса на первое место.

Перестройка индексных файлов

При внесении изменений в большие таблицы тратится много времени, так как при внесении каждого изменения заново пере­страиваются все открытые индексные файлы. Для экономии времени индексные файлы закрывают и вносят изменения в таб­лицу. Однако в этом случае возникает несоответствие между об­новленной таблицей и индексными файлами. Для устранения указанного несоответствия надо заново перестроить индексные файлы. После открытия всех индексных файлов, принадлежа­щих измененному табличному файлу, надо подать команду REINDEX. Команда действует на все индексные файлы, откры­тые в текущей рабочей области. Переиндексирование можно также выполнить, подав из Главного меню командуTable -> Rebuild Indexes .

Преобразование однойндексного файла в тег

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

COPY INDEXES < имена idx - файлов > | ALL

Опция ALL указывается в том случае, если надо скопировать все одноиндексные файлы. При этом список имен <имена idx-файлов> не указывается. Тегам присваиваются имена одноиндексных файлов. При копировании нескольких одноиндексных файлов их имена перечисляются через запятую. Если опция ТО опущена, то одноидексные файлы копируются в текущий мультииндексный файл. Если опция ТО содержит имя несуществу­ющего мультииндексного файла, то он создается.

Допустима и обратная операция, то есть один тег преобразу­ется (копируется) в одноиндексный файл с помощью команды:

COPY TAG <список имен тегов> {OF <с d х-файл> ] TO < idx -файл>]

Предварительно мульти индексный файл должен быть от­крыт. Можно скопировать отдельные теги, указав <список имен тегов>, либо все теги, используя опцию ALL.

© wegonnaplay.ru, 2024
Wegonnaplay - Игры каждый день