Ошибка формата файла журнала регистрации ошибка формата файла журнала регистрации

Описание ошибки:
Ошибка формата файла журнала регистрации
по причине:
sqlite3_step failed: database disk image is malformed
db: \192.168.1.111FileServer<каталог>1Cv8Log1Cv8.lgd
Ошибка формата файла журнала регистрации в 1С: Предприятие 8. Может возникнуть в любой конфигурации, на любом релизе платформы.

Найденные решения:

Ошибка может возникнуть в любой момент, для любой операции в базе данных. Из-за ошибки станет не возможным открыть список журнала в режиме 1С:Предприятие. Каждая попытка будет заканчиваться одной и той же ошибкой.

1C 8 Ошибка формата файла журнала регистрации по причине: sqlite3_step failed: database disk image is malformed

В этот момент возникает два варианта развития событий. Первый заключается в том, чтобы восстановить, исправить файл журнала регистрации с помощью соответствующей программы sqlite3. Но этот процесс может оказаться не таким быстрым, как его описывают в соответствующих публикациях. Не будем пересказывать содержание методики, оставив лишь для первого варианта полезные ссылки: Ошибка формата файла журнала регистрации, database disk image is malformed в обсуждении на форуме infostart.ru или Восстановление журнала регистрации на сайте ИТС 1С. Это был первый вариант.

Второй вариант проще и быстрее, но не значит, что он лучше. У каждого из вариантов свои плюсы и минусы. Так вот у второго варианта из плюсов — это его быстрота и простота, а из минусов — данные журнала регистрации будут утрачены. Но, кто-то из специалистов допускает данные вариант в силу его быстроты, когда необходимо вернуть работоспособность базы, если ошибка возникает не только в процессе попытки доступа к журналу регистрации. Надо понимать, какие данные хранятся в журнале регистрации, чтобы оценить критичность их потери в текущей ситуации. В общем случае журнал содержит информацию о базовых действиях пользователей базы: когда пользователь запускал/завершал сеансы работы с базой, основные действия с справочниками и документами базы (создание, изменение, сохранение, проведение, пометка на удаление и т.п.). Если можно отметить, что данные журнала регистрации для отслеживания активности пользователей и оценки их действий практически не используются, то и содержимым журнала с данными до текущего момента можно пожертвовать. Тем более, что после данной операции журнал будет пополняться новыми записями в рабочем режиме, будет создана его новый файл.

Итак, чтобы удалить файл журнала регистрации, необходимо перейти к каталогу, где он содержится. Текст ошибки может подсказать местонахождение файла журнала регистрации 1Cv8.lgd.

1C 8 как удалить файл журнала регистрации 1Cv8.lgd

 В текущем примере демонстрируется работа по удалению файла журнала регистрации файловой базы. Переходим в проводнике к содержимому каталога.

1C 8 пример размещения файла журнала регистрации в папке базы

Удаляем файл журнала регистрации 1Cv8.lgd.

1С 8 как быстро исправить, устранить ошибку Ошибка формата файла журнала регистрации по причине: sqlite3_step failed: database disk image is malformed

Остается дать окончательное согласие на удаление файла.

1С 8 файл журнала регистрации 1Cv8.lgd файловой базы

Если с базой работают пользователи, то небходимо завершить их работу, т.к. даже поврежденный файл журнала регистрации 1Cv8.lgd невозможно будет удалить.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

10-03-2021

Журавлев А.С.
(Сайт azhur-c.ru)

Ошибка формата файла журнала регистрации — ошибка может возникнуть при попытке просмотреть журнал регистрации или внести в него запись.

Журнал регистрации как в файловой базе так и в серверной лежит отдельно от самой базы в отдельном файле. Соответственно данный файл подвержен файловым ошибкам, неизменно возникающим на жестком диске.

Однако для серверной базы копия журнала регистрации хранится и в базе данных.

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

C:Program Files (x86)1cv8srvinforeg_1541996ce746-3a5a-4014-ae41-ba6d7c7aec25

Если база файловая, то журнал регистрации находится прямо в каталоге базы данных.
Файл журнала регистрации имеет название: 1Cv8.lgd

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

Настройка журнала

Чтобы увидеть доступные настройки, необходимо зайти в режиме 1С конфигуратор и в главном меню найти пункт «Администрирование — Настройка журнала регистрации…»:

Получите 267 видеоуроков по 1С бесплатно:

В открывшемся интерфейсе доступны следующие настройки ведения журнала:

Здесь в поле «Регистрировать в журнале события» можно указать детализацию регистрируемых данных. Пункт «Не регистрировать» позволяет отключить ведение журнала вовсе. Другие пункты расшифровываются следующим образом:

  1. Ошибки — все возможные варианты сбоев и ошибок в системе;
  2. Предупреждения — важные сообщения системы, которые не являются ошибками;
  3. Информация — вся информация об изменяемых данных системы;
  4. Примечания — неважные сообщения (почти всегда их можно отключить).

Другие настройки рассмотрим далее, они относятся к оптимизации работы журнала.

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

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

Начал искать информацию в интернете. Удивился ,что ошибка на самом деле не очень популярная, хотя привык к тому, что по ошибкам 1С всегда много информации находится, потому что продукт очень популярный. Но не в этот раз. В одном месте заметил упоминание установленного антивируса Kaspersky Endpoint Security 10

Обратил внимание, что у меня установлена эта же версия. Автор указывал, что проблема кроется конкретно в этой версии антивируса

После удаления, ошибка у него исчезла.

Немного поискав информации конкретно по этой ошибке с антивирусом, убедился, что такие случаи не редкость и встречались у других людей. Удалил с компьютера Kaspersky Endpoint Security 10 и установил 8-ю версию. Ошибка 1С «Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работу с этой версией. Не совпадает версия временного файла» исчезла.

Вот такой вот неожиданный глюк совместимости программ. С Kaspersky Endpoint Security 10, к сожалению, это не первый подобный случай. Хоть продукт вышел уже достаточно давно, ошибки с ним случаются до сих пор, приходится использовать более ранние версии.

30.10.2015 Дополнение.

Сегодня вновь столкнулся с подобной ошибкой — Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работу с этой версией. Не совпадает версия временного файла. При этом у всех пользователей как минимум пол года стоит 10-я версия Касперского и все было в порядке. Невозможно было зайти ни с одного компьютера. База локальная, расположенная в сетевой папке. Зайти не получалось никому. Была предпринята попытка удалить файлы с маской 1Cv8tmp* в папке с базой, но не получалось, так как файлы были заняты.

У меня не было доступа к серверу с сетевой папкой, посмотреть у кого открыты файлы не получалось. Пользователей с базой работало всего несколько человек и у всех база была закрыта. Но оказалось, что у одного пользователя завис процесс 1С на компьютере и его не было видно, если не заглянуть в список процессов. Через диспетчер задач удалил этот процесс, затем удалил файлы 1Cv8tmp* и зайти в базу удалось.

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Где хранится журнал регистрации

Начнем с того, где хранится журнал регистрации в 1С. Варианта может быть два — для файлового и клиент серверного режима работы.

Файловая база

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

Красным выделен путь. Если мы проследуем по этому пути, то увидим следующую картину:

Папка 1Cv8Log — это и есть директория, содержащая журнал регистрации.

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

Клиент-серверная база 1С SQL

В клиент-серверном режиме файлы истории обычно хранятся на сервере в каталоге:

C:Program Files1cv8srvinfo 1Cv8Log

Чтобы перенести журнал регистрации 1С для базы SQL, так же, как и для файловой, достаточно перенести папку в расположение новой базы.

Так же и с удалением — достаточно просто удалить данную папку.

Решение

Утилита командной строки sqlite

Для Windows утилиту нужно скачать отсюда.

Для Linux следует использовать утилиту, доступную в официальных репозиториях.

Восстановление

ВНИМАНИЕ! Все нижеследующие операции обязательно производите над копией файла журнала регистрации

  • Остановите кластер «1С:Предприятия» или завершите все клиенты для файлового варианта.
  • Скопируйте испорченный файл 1Cv8.lgd в отдельную директорию. Например, «C:LogRestore».
  • Туда же разархивируйте sqlite3.exe из архива, который скачале ранее.
  • В командной строке перейдите в рабочую директорию («C:LogRestore»).
  • Выполните команду:

sqlite3 1Cv8.lgd .dump >> backup.sql

Откройте файл backup.sql. Он может быть большой и MS Notepad его может не открыть. В этом случае воспользуйтесь, например, Notepad++.
Если самой последней строкой у вас является «ROLLBACK;» — замените ее на «COMMIT;» и сохраните файл.
Переименуйте файл 1Сv8.lgd в текущей директории в 1Cv8-orig.lgd.
В этой же директории выполните команду:

При этом могут выводиться ошибки. Это нормально.

Откройте файл 1Сv8.lgd Конфигуратором пустой файловой базы. Убедитесь, что данные сохранены.
Замените испорченный файл в том месте, где он был изначально на 1Cv8.lgd из текущей директории.

Журнал регистрации 1С — специальный механизм платформы 1С версий 8.2 и 8.3, который позволяет фиксировать работу пользователей с системой. С помощью журнала можно узнать, кто и когда изменял объекты в системе: справочники, документы, регистры и т.д. Ниже мы рассмотрим, как работать с этим механизмом, где хранятся файлы журнала регистрации 1С, каким образом происходит его настройка, как оптимизировать журнал регистрации и как можно произвести полную очистку данных.

Solution

  1. Firstly, we should try to verify the database with an embedded SQLite3 command. So, we need to have  installed (v3.25.2 or later). The installation steps depend on the OS.
  2. We will use Docker instead of direct installation (this option is available only for x86_64 CPUs, for arm-based boards you will need to install  via the package manager of your OS).
  3. Stop the storagenode
  4. Make a backup of all the  databases. They are located in the  folder for your data storage. For example , where  is the data folder you had specified in the  option of the  command for your storagenode, or in case of using the Windows GUI, in the option of the file.
  5. Check each database for errors. We will use  as an example in this guide.
    1. Docker (replace with an absolute path to the databases location, or simple switch the current location to there)
      docker run --rm -it --mount type=bind,source=${PWD},destination=/data sstc/sqlite3 find . -iname "*.db" -maxdepth 1 -print0 -exec sqlite3 '{}' 'PRAGMA integrity_check;' ';'
    2. Direct installation
      1. Linux

        sudo apt update && sudo apt install sqlite3 -y
      2. Windowshttps://www.sqlitetutorial.net/download-install-sqlite/
      3. Make sure that the version is v3.25.2 or later, otherwise the check will not work correctly. 
        sqlite3 --version
      4. perform the integrity check (perform for each database), for example for :
        sqlite3 /path/to/storage/bandwidth.db "PRAGMA integrity_check;"
      5. Or check all databases with help of shell commands:
        1. bash (Linux)
          find /path/to/storage/ -iname "*.db" -maxdepth 1 -print0 -exec sqlite3 '{}' 'PRAGMA integrity_check;' ';'
        2. PowerShell (Windows)
          Get-ChildItem X:storagenodestorage*.db -File | %{$_.Name + " " + $(sqlite3.exe $_.FullName "PRAGMA integrity_check;")}
  6. If you see errors in the output, then the check did not pass. We will unload all uncorrupted data and then load it back. But this could sometimes fail, too. If no errors occur here, you can skip all the following steps and start the storagenode again.
  7. If you were not lucky and the check failed, then please try to fix the corrupted database(s) as shown below.

  8. Open a shell

    1. Docker version of sqlite3. Open a shell Inside the container:

      docker run --rm -it --mount type=bind,source=x:storagenodestorage,destination=/storage sstc/sqlite3 sh

      Tip. You can use  to restore your databases. It uses memory instead of disk and should take a lot less time than on HDD (you can read more about usage of  with Docker in the Use tmpfs mounts guide or this forum comment). For Windows or MacOS you must increase the allocated RAM for the docker’s VM via Docker desktop application to fit a double size of the greatest corrupted database file in case of usage of .

    2. You could use your shell directly if you have sqlite3 installed. In that case, use the path to your storage instead of «/storage/» across this guide below.
    3. For Windows with local sqlite3 installed, we recommend to use a PowerShell to execute the commands below. Don’t forget to replace the «/storage/» folder with your local path to the folder where the databases are stored. If the  executable is not in the system variable PATH, then you should specify the full path to it or run from the location of the executable.
  9. Now run the following commands in the shell. You need to repeat steps 9 to 14 for each corrupted  database:

    cp /storage/bandwidth.db /storage/bandwidth.db.baksqlite3 /storage/bandwidth.db
  10. You will see a prompt from . Run this SQL script:

    .mode insert.output /storage/dump_all.sql.dump.exit
  11. We will edit the SQL file 

    1. Linux or docker version:

      cat /storage/dump_all.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >/storage/dump_all_notrans.sql
    2. PowerShell (Windows) with a local sqlite3 version:
      Get-Content dump_all.sql | Select-String -NotMatch TRANSACTION | Select-String -NotMatch ROLLBACK | Select-String -NotMatch COMMIT | Set-Content -Encoding utf8 dump_all_notrans.sql
  12. Remove the corrupted database (make sure that you have a backup!)

    rm /storage/bandwidth.db
  13. Now we will load the unloaded data into the new database

    sqlite3 /storage/bandwidth.db ".read /storage/dump_all_notrans.sql"
  14. Check that the new database ( in our example) has a size larger than 0:

    1. Linux or docker version

      ls -l /storage/bandwidth.db
    2. PowerShell (Windows) with a local sqlite3 version:
      ls /storage/bandwidth.db
  15. Exit from the container (skip this step, if you use a directly installed sqlite3)

    exit
  16. If you are lucky and all corrupted  databases are fixed, then you can start the storagenode again.

Ошибка формата файла журнала регистрации
по причине:
sqlite3_step failed: database disk image is malformed
db: C:Program Files1cv8srvinfo
eg_154134eda2fe-bcf4-485e-ab47-4f302319f59a1Cv8Log1Cv8.lgd
sql: SELECT severity, date, connectID, session, transactionStatus, transactionDate, transactionID, userCode,
computerCode, appCode, eventCode, comment, metadataCodes, sessionDataSplitCode, dataType, data, dataPresentation,
workServerCode, primaryPortCode, secondaryPortCode FROM EventLog WHERE date<3155378867999999 AND eventCode IN (1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42) ORDER BY date DESC

 

Разберемся с

Ошибка формата файла журнала регистрации

database disk image is malformed

Текст сообщения :


Ошибка формата файла журнала регистрации
по причине:
sqlite3_step failed: database disk image is malformed
db: C:Program Files1cv8srvinfo
eg_154134eda2fe-bcf4-485e-ab47-4f302319f59a1Cv8Log1Cv8.lgd
sql: SELECT severity, date, connectID, session, transactionStatus, transactionDate, transactionID, userCode,
computerCode, appCode, eventCode, comment, metadataCodes, sessionDataSplitCode, dataType, data, dataPresentation,
workServerCode, primaryPortCode, secondaryPortCode FROM EventLog WHERE date<3155378867999999 AND eventCode IN (1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42) ORDER BY date DESC

Всё печально. Журнал регистрации убит каким-то системным сбоем.

Узнаем, что начиная с версии платформы 8.3.5.1068 журнал регистрации хранится в одном файле базы данных SQLite. Этот файл имеет расширение lgd. (Подробнее http://v8.1c.ru/o7/201310log/index.htm )

На форумах пишут, что надо выгрузить и загрузить базу данных SQLite, чтоб восстановить её работоспособоность, правда с возможными потерями данных.

Качаем и распаковываем отсюда https://www.sqlite.org/download.html последнюю версию утилиты для вашей ОС.
Мне подошла:
Precompiled Binaries for Windows sqlite-shell-win32-x86-3081101.zip (313.47 KiB)
The command-line shell program (version 3.8.11.1). (sha1: 1640b3608784a36a113d4fcf69681503e4e9cdc3)

Берем наш журнал, путь к нему можно взять из текста сообщения

C:Program Files1cv8srvinfo
eg_154134eda2fe-bcf4-485e-ab47-4f302319f59a1Cv8Log1Cv8.lgd

и копируем в папку с утилитой.

Выполняем команду в командной строке

sqlite3 1Cv8.lgd «.dump» > 1.txt

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

sqlite3 new.db «.read 1.txt»

По окончании получаем работоспособную базу журнала в файле new.db
Теперь ее можно положить себе в архив и начать новый журнал регистрации.
Или попробовать вернуть на место испорченного журнала.

Stay backuped

 

Я
   Lama12

12.10.15 — 13:54

Столкнулись с неприятной «фичей» новой платформы.

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

Что сделали.

Перенесли папку с журналом в новое место.

Запустили базу снова.

Начал писать ся новый журнал.

При попытке прочитать старый журнал выдается сообщение:

Ошибка формата файла журнала регистрации

по причине:

sqlite3_exec failed: database disk image is malformed

db: D:Log_devdebreg_2041da905966-250b-4dfc-97df-da05638e3fab1Cv8Log1Cv8.lgd

sql: PRAGMA journal_mode = OFF

Как с этим можно побороться? Ведь все что нажито непосильным трудом… за последние 9 месяцев… так и не родилось… :)

   Лефмихалыч

1 — 12.10.15 — 14:01

подозреваю, что мистец котенку

гуглить «database disk image is malformed » пробовал?

   Lama12

2 — 12.10.15 — 14:03

(1) Пробовал. Есть предложение сделать какой-то дамп. Но все делается под линуксами. Написано что командная строка sqlite 3 нормально под виндой не работает. Свой специалист по линуксам в отпуске. Так что ищу альтернативные варианты.

   Лефмихалыч

3 — 12.10.15 — 14:06

(2) ты попробовал что-то и оно не получилось или ни чего не пробовал?

   Живой Ископаемый

4 — 12.10.15 — 14:09

«Что сделали.

Перенесли папку с журналом в новое место. »

Надо было использовать из СП:

СкопироватьЖурналРегистрации

ОчиститьЖурналРегистрации

   Lama12

5 — 12.10.15 — 14:15

(3) Еще не пробовал. Вот эта статья — http://itsphera.ru/1c/vosstanovlenie-fajla-baz-dannyx-sqlite.html

(4) Все ходы записаны. Сейчас попробую на копии.

   Lama12

6 — 12.10.15 — 14:44

(4) Yt получается. Тоже сообщение.

А вот дамп, вроде делается. Долго… О результатах сообщу. Вдруг кому будет полезно.

  

Lama12

7 — 13.10.15 — 09:10

Все получилось. Лог востановился и работает.

Порядок решения проблемы.

Работа ведется в командной строке.

Установить текущей папкой ту, в которой расположена база данных. Туда же поместить sqlite3 command line.

Выполнить команду sqlite3 main.db .dump>>myDumpSQLite.sql

Где main.db — файл поврежденного лога.

В результате в текущей папке получится файл myDumpSQLite.sql.

В принципе, можно его посмотреть. Это текстовый файл.

После получения файла выполнить команду sqlite3 main-recovered.db <myDumpSQLite.sql

В результате получаем файл main-recovered.db — это и есть восстановленный лог. Переименовываем его для удобства 1С и все. В принципе можно и так читать любым просмоторщиком sqlite.

Возможно, вам также будет интересно:

  • Ошибка формата файла pdf на андроид
  • Ошибка формата транзакция регистрация для документооборота уже была выполнена
  • Ошибка формата таблицы этикеток 1с
  • Ошибка формата сообщения что это
  • Ошибка формата сообщения центр инвест

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии