Ошибка при выполнении запроса post к ресурсу e1cib login файл базы данных поврежден
Недавно столкнулся с неприятной ошибкой на одном из старых серверов с 1С. Решил записать решение, чтобы не забыть и с другими поделиться. При определенных обстоятельствах пользователь не может зайти в базу 1С, получая ошибку во время логина на нехватку памяти.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный теcт.
Решение проблемы "недостаточно свободной памяти для выполнения операции" в 1С
В общем случае данную проблему можно решить следующим образом. Открываем консоль управления кластером, идем в раздел Рабочие серверы, выбираем свой сервер и его свойства. Меняем 2 параметра:
- Количество ИБ на процесс.
- Количество соединений на процесс.
Чтобы проблема ушла, вам необходимо уменьшить значения. Определить оптимальные сходу вряд ли получится. Для начала можете их просто уменьшить вдвое, поставив 4 и 128 соответственно.
sqlite3_exec failed: database disk image is malformed
I. Восстановление из резервной копии
Откройте Конфигуратор. Через меню « Администрирование — Загрузить информационную базу… » выполните восстановление рабочей резервной копии.
Заключение
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
Если нет возможности изменить настройки из-за несоответствия лицензии, временно поможет перезапуск сервера 1С. Но работать он будет нормально до тех пор, пока очередной рабочий процесс не займет максимально возможную для себя память. На практике это в районе 3.5 Гб. После этого если не запустится новый рабочий процесс, новые подключения к базам будут невозможны. Придется раскошелиться на 64-х битный сервер.
Если у вас медленно работает сервер 1С, читайте мою статью по его профилированию - Процесс 1С rmngr.exe грузит процессор.
db: c:\1C\Base\1Cv8Log\1Cv8.lgd
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
по причине:
Ошибка при выполнении операции с информационной базой
Файл базы данных поврежден "c:\1C\Base\1Cv8.1CD"
по причине:
Файл базы данных поврежден "c:\1C\Base\1Cv8.1CD"
Возникла эта ошибка после того, как в офисе выключилось электричество и часть клиентов отрубились. При этом сам сервер не выключался и никак не пострадал от пропажи света. Первым делом я решил проверить целостность файла с базой. Стоит отметить, что в данном случае речь идет про файловый вариант базы 1С.
У 1С Предприятия есть в комплекте утилита для проверки файла базы данных 1Cv8.1CD на наличие ошибок. Называется она chdbfl.exe и живет по адресу
C:\Program Files (x86)\1cv8\8.3.5.1383\bin
Работа этой утилиты по восстановлению ошибок в базе данных не выявила. Тогда стал смотреть на файл 1Cv8.lgd, он упоминается в тексте ошибки. С версии платформы 8.3.5.1068 в нем хранится журнал регистрации. Мне он был не нужен, я просто его удалил, предварительно на всякий случай сохранив. Ошибка исчезла. При первом запуске базы файл был создан вновь.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите подробнее программу ссылке.
VI. Нестандартные ситуации
Когда один пользователь входит в базу 1С и работает без ошибок, а у другого — сбой. В этом случае выполните очистку кэша на рабочем месте, где возникает ошибка. Подробнее здесь .
В других случаях ошибка может скрываться в платформе 1С. Поэтому, проверьте обновление и переустановите платформу на новый релиз, одновременно удалив устаревшие версии.
⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.
Проблема : При попытке сдать годовой отчёт во время заполнения появляется ошибка следующего плана:
Ошибка : Неспецифицированная ошибка работы с ресурсом. Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: Недостаточно свободной памяти для выполнения операции.
Оборудование : 1С 8.3.15.1700, 1С: Бухгалтерия 8.3.2.0.66.88
Решение проблемы : На моей памяти подобное в небольших организациях начинает происходить ежегодно - в январе, когда нужно готовить годовые отчёты для сдачи в различные контролирующие ведомства. Ошибка появляется не обязательно при сохранении. А может просто появиться, когда вносятся какие-либо данные. При этом на одном компьютере всё происходит до ужаса стабильно раз в год. На других - по обстоятельствам.
Есть в Интернете несколько вариантов решения проблемы:
1) Увеличить ОЗУ. Ну, тут, как говорится, смотря по обстоятельствам. Однако отмечу такой факт: на компьютере, где ошибка возникает ежегодно, база рабочая весит не более 1,6 Гб, а ОЗУ стоит 16 Гб (кстати, увеличен объём в последние два года дважды - сначала с 4 до 8, а потом с 8 до 16 Гб!!). Если дело тут в памяти, то тогда как работают остальные на куда менее "объёмо-памятных" ПК?
2) Сам по себе глючный сервис /e1cib/logForm. И вроде как там стоит выбирать время, то, сё. пятое-десятое. Однако при работе на разных БД в одно и то же время бывало так, что один работает нормально, а другой - вот такое выдаёт.
Есть ещё всякие разные объяснения подобной ошибке. Мне в 5 случаях из 6 (единственный иной заключался в том, что я ещё, ничего не зная, просто сделал отчёт у себя на домашнем ПК по архивной БД) помогло следующее:
а) Урезание журнала БД. Делается это классическим способом: либо в конфигураторе, либо при закрытой базе просто удалением файлов журнала в папке, если этот журнал не жалко.
б) Проверкой и переиндексацией БД. Тут тоже можно проявить вариации: либо сделать это в конфигураторе, либо внешней утилитой (если кто сомневается, вдруг чего) chdbfl.exe.
Обе процедуры помогают (проверено мной). Понятное дело, что на очень-очень мало мощном компьютере с убитой ОС и старым ПО вряд ли и эти процедуры смогут помочь. Так что не стоит доводить всё до абсурда и утопии.
А потому: желаю всем качественного ПО и спокойной работы над поддержанием его работоспособности.
Если база открывается то выгрузить для перехода в сервис, во фреше загрузить, потом выгрузить уже в обновленной версии - круто? При тестировании выбери только реструктуризация как варик. Если не чего не поможет WinHex и погнал )))
(9) там нет. если отменить все изм, и реструктуризация не катит, загрузка CF со структурой до обновления не помогает. тогда только hex
(3) выгрузить конфу в файлы, в руте будет файло с идентификатором, по идентификатору находишь в тул1сд че за константа
Если база открывается в режиме предприятия то создаешь пустую базу и выгружаешь все данные через XML.
На битых данных будет падение выгрузки - их пропускаешь
(31) Спасибо, не сомневаюсь. Вопрос только в том чтобы найти нужную. Да ищу, параллельно пробую спрашивать.
(32) Тебе нужно попробовать с помощью Tool_1CD удалить таблицу CONFIGSAVE
По всей видимости твоя база упала в момент реструктуризации.
То есть таблица CONFIG должна быть живая.
(29) >Изначально думал поднять из сф новую базу и воспользоваться ПолучитьСтруктуруХраненияБазыДанных()
В базах даже с одинаковой конфигурацией будут разные идентификаторы.
То есть ПолучитьСтруктуруХраненияБазыДанных() даст разные данные.
это та самая схема в которой нет моей константы? как понять формат этого чтобы корректно внести данные?
таблица _CONST30015 в файле присутвует
(39) таблица CONFIGSAVE пуста, это как я понимаю копия конфигурации которую надо будет применить
(47) Пример как такое делать есть ?
У меня пару месяцев назад был подобный вопрос с базой.
Тоже ругалось на отсутствие в схеме базы данных.
Я не нашел способ редактировать DBSCHEMA и решил задачу выгрузкой данных через XML.
(51) Если нужно и не найдешь стукнись на мыло. Мыло в профиле. Сброшу.
Я не помню уже где скачивал.
(57) это обычный текст, не надо его разбирать
При желании, можно в json конвертнуть или в xml.. только, не за чем
(68) да. не восстанавливает.проверил на 1с8.2. но как-то мне удалось восстановить DBSchema без моего участия. может подменой похожего или пустого и реструктуризацией.
Коллеги, а почему автор не хочет очистить таблицу CONFIGSAVE и просто вернуться к той конфигурации которая была ?
(71)архива с конфой-донором нет.но если типовая то конфу-донора можно сгенерировать.возвожно- это самое простое решение. очистка CONFIGSAVE не поможет. произошло рассогласование метаданных и структуры бд или таблицы проекции метаданных в структуру бд
,кот. хранится в записи dbnames из таблицы params
пока не совсем понимаю в чем различие, правильно ли я понимаю что сами метаданные это то что хранится в таблице CONFIG
структура бд это то что храниться в DBSCHEMA а проекция это то что в храниться в dbnames и dbnames должно соответвовать DBSCHEMA ?
нет. не правильно понимаете . в DBSCHEMA хранятся соответствия типов 1с и бд . и естественно DBSCHEMA должна соответствовать dbnames .но все , о чем я питсал относится к 1с8.2 . в 1с8.3 может быть по-другому.
(72) >если типовая то конфу-донора можно сгенерировать
А разве это не приведет к тому же что и создание новой базы с такой же конфой но при этом у объектов будут другие индентиффикаторы ?
(0) А как ты с этой базой столкнулся ? Может все таки есть какие то бэкапы.
Это какое то реальное безумие обновлять базу при полном отсутствии бэкапов.
(75) структура бд в новой базе может быть другой. задача - привести в соответствие метаданные , dbnames и структуру бд. поскольку тулсиди умеет выгружать-загружать конфигурацию замена конфигурации- более простая операция для файловой базы чем редактирование dbnames или изменение структуры бд.
+(75) а для серверной бд проще изменить структуру бд. и на последнем месте - правка dbnames и DBSCHEMA
Немного разобрался как свзяаны талицы. нашел свою константу в DBNames. Может ктото подскажет как ее отредактировать?
(81 )тулсиди вроде умеет выгружать- загружать таблицы. выгрузите парамс отредактируйте запись DBNames. загрузите обратно. если в DBNames будет абракадебра - то разожмите-сожмите ее c помощью v8unpack
Мне как то попадалась база с такими симптомами, у меня сложилось впечатление что при обновлении базы записалась новая dbNames? а новая dbschema не записалась, поэтому и ругается и даже если если исправите проблему с этой конкретной константой, потом будет другая и еще другая константа, и а потом потом справочник итак далее. ДЛя исправления этого надо ручками прописать dbschema для новых и измененных объектов, а задача эта достатчно муторная. Либо проверить соответствие DBShema - dbNames? и все записи которых нет в DBShema удалить из dbNames. Затем что нибудь изменить в конфе чтобы пошел процесс реструктуризации.
Все это возможно сделать если перевести базу в SQL (у меня сработала выгрузка в dt/загрузка из dt), у меня сложилось мнение что на файловой сделать это нельзя. Хотя я уже не помню, но в SQL легче переписывать эти файлы.
:(
(94) ДЛя исправления этого надо ручками прописать dbschema для новых и измененных объектов, а задача эта достатчно муторная. как сформировать правильную схему?
Либо проверить соответствие DBShema - dbNames? да я пока вижу неторое количество новых констант. Как сопоставить пока не поинмаю только начинаю узучать
сди толс умеет вроде следующее, только как пока я не могу применить, по сути надо номер сопоставить с названиями с одной базе и другой и получить соответвие номеров вот как и поулчить я бы тоже хотел понять.
Поле ввода «Файл соответствия номеров» и кнопка «Замена TREF»
Иногда в процессе восстановления возникает необходимость переноса таблиц из одной базы в другую базу с такой же конфигурацией, но с несовпадающей нумерацией в DBNames. Например, разрушена таблица в центральной базе, но нужная таблица есть в периферийной базе. Кроме того, что в таких базах не совпадают имена таблиц и полей, которую можно решить правкой файла описания таблицы, есть еще проблема несовпадения типов ссылок, которые хранятся в полях с окончанием "TREF". Подробности описаны в разделе "Структура информационной базы 1С". Данный инструмент позволяет произвести замену всех значений во всех таблицах базы в полях с окончанием TREF. Список замен должен содержаться в файле, выбираемом в поле ввода. Файл представляет собой текстовый файл. В каждой строке файла содержатся два числа, разделенных табуляцией. Второе число - заменяемое. Все поля, содержащие такое значение, заменяются на первое число строки.
Все замены производятся без изменения индексов в базе!
Самый простой путь, удаляйте все из DBNames на что ругается (напишите сравнение dbnames и dbshema). Так вы по сути вернетесь к базе до обновления. ТОлько для этого надо еще все конфиги вернуть к релизу до обновления (если это типовая база), то это легко. Если все сделаете верно, то с вероятностью 95 % база снова запустится, и будет как до обновления.
я не знаю с какого релиза обновлялись.
мне вот удаление конкреной константы не помогло. хотя не исключаю что к я уже чет напутал. ладно, завтра со свежей головой
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный теcт.
Введение
Данная ошибка может сопровождаться разным названием и описанием, но по смыслу они будут примерно одинаковые. Суть в том, что не хватает оперативной памяти для входа в базу. Но при этом совсем не очевидно, о какой памяти идет речь. Например, вот текст:
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Ошибка выделения памяти
HRESULT=80004005,
Изначально мне показалось, что проблема с нехваткой памяти для работы MSSQL сервера. Так что я пошел и отрегулировал ее потребление в настройках сервера. Но это не помогло. На следующий день пользователи опять периодически стали получать эту ошибку, хотя на сервере было достаточно свободной оперативной памяти. Стал разбираться дальше.
Варианты действий:
- Восстановить информационную базу из резервной копии (если есть).
- Использовать встроенную утилиту для проверки целостности — chdbfl.exe.
- Выполнить тестирование и исправление базы через Конфигуратор.
- Создать новую пустую базу и загрузить сформированный dt-файл.
Рассмотрим каждый из вариантов подробнее.
Рекомендация : перед любыми действиями сделайте резервную копию базы и убедитесь, что отсутствуют активные подключения пользователей.
sql: PRAGMA journal_mode = delete
Если нажать "Показать информацию для технической поддержки", то можно увидеть некоторые подробности ошибки:
IV. Выгрузить dt-файл и создать новую базу
Пункт аналогичен варианту №1 с тем различием, что вы восстанавливаете не резервную копию, а сначала выгружаете dt-файл.
- Откройте Конфигуратор для ИБ, где наблюдаются ошибки.
- Через меню « Администрирование — Выгрузить информационную базу… » выполните выгрузку базы в dt-файл.
- Создайте новую информационную базу и войдите в Конфигуратор.
- Через меню « Администрирование — Загрузить информационную базу… » выполните загрузку копии базы.
II. Использование утилиты chdbfl.exe
- Найдите папку с установленной платформой 1С — например, « C:\Program Files (x86)\1cv8\8.x.xx.xxxx », где 8.x.xx.xxxx - номер релиза платформы. Или проверьте в свойствах ярлыка запуска 1С, значение «Рабочая папка».
- Откройте приложение из каталога bin, где находится искомый файл.
- Выберите файл 1Cv8.1CD, установите признак « Исправлять обнаруженные ошибки » и нажмите на кнопку « Выполнить ».
По окончанию проверки программа покажет результаты, а при возможности — исправит обнаруженные ошибки.
III. Тестирование и исправление
- Откройте Конфигуратор.
- Выберите пункт « Тестирование и исправление… ».
- В блоке « Проверки и режимы »: — если база большая, проверьте последовательно операции; если малого размера, то все разом:
— Проверка логической целостности;
— Проверка ссылочной целостности;
- Установите параметр « Тестирование и исправление ».
При наличии ссылок на несуществующие объекты программа по умолчанию предлагает ничего не изменять.
Рекомендация : проверьте для начала режим ссылок «Не изменять». Программа выведет найденные ссылки, и после этого примете решение, очищать их или создавать.
Неспецифицированная ошибка работы с ресурсом
Второй вариант текста той же самой ошибки выглядел следующим образом:
Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса GET к ресурсу /e1cib/cmi/commands:
Недостаточно свободной памяти для выполнения операции
После этого я уже понял, что проблема не в MSSQL сервере, а в самой 1С. Поиск в интернете и анализ ситуации на сервере привел к пониманию проблемы. Суть ее вот в чем. Сервер 1С создал рабочий процесс rphost, который обслуживает подключения к базам данных. В моем случае сервер 1С 32-х битный, так что он ограничен по максимальному использованию памяти одним рабочим процессом.
Что делать?
V. Дополнительные действия
При подозрениях на ошибки жёсткого диска, на котором располагается информационная база:
- скопируйте каталог базы на другой физический диск;
- удалите все файлы и папки, кроме файла 1Cv8.1CD;
- войдите в базу с нового расположения.
Читайте также: