1с ошибка субд out of memory for query result 1с
Поступило обращение со следующей ошибкой:
"Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
Недостаточно свободной памяти для выполнения операции
Выполняется ожидание возможности запуска.
При появлении возможности, запуск будет выполнен автоматически.
Нажмите "Выполнить запуск" для немедленной попытки запуска.
Настроив ТЖ с событием EXCP, EXCPCNTX обнаруживаем запись:
Обе ошибки сообщают о проблеме объема памяти, на основании которых подозреваемым становится код конфигурации (возможно наличие неоптимальных запросов).
Недостаточно памяти для получения результата запроса к базе данных
Открываем конфигуратор и переходим в указанный модуль к указанному номеру строки кода:
ВнешниеОбъектыХранилище = Константы.ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль;
ДвоичныеДанныеОбработки = ВнешниеОбъектыХранилище.Получить().Получить();
Смотрим тип объекта (константы), к которой идет обращение:
Проверяем, какой объем данных фактически занимает константа.
На диске таблица занимает всего 4688 Кб = 4,6 Мб. Размер является незначительным, причина не в константе.
32-разрядный кластер 1С имеет ограничение, примерно, 3.8 Гб, по достижении которого происходит падение процесса, службы.
В режиме отсутствия нагрузки rphost занял 3,2 Гб, что близко к порогу падения.
Подобные падения будут происходить в любой момент времени.
- в планировщике Windows настроен перезапуск службы 1С; такими образом освобождается виртуальное адресное пространство в памяти, создается новый рабочий процесс. Настройка тоже не гарантирует исключение ошибки, но снижает вероятность ее возникновения.
- сменить 32-разрядный кластер серверов 1С на 64-разрядный;
- осуществить переход на платформенные лицензии КОРП для снятия ограничений по настройкам, возможности гибкой настройки распределения памяти сервера.
Так как на сервере используется 14 ядер процессора, то необходим переход на платформенные лицензии КОРП.
Следует отметить, что ошибки, содержащие именно код 80004005, встречаются постоянно. У них есть особая классификация, которую при желании можно найти в соответствующей литературе.
Рекомендации по решению проблемы от разработчиков 1С
Данные, являющиеся неверными, система удалит в автоматическом режиме, но для этого нужно дать ей доступ, чтобы она изменила главный объект. К примеру, если вы работаете в облачном хранилище, его надо просто захватить.
Поддержка конфигурации требует её проверки и у поставщиков. С этой целью:
- нужно сохранить данные о конфигурации поставщиков. Для этого используйте CF-файл;
- теперь необходимо провести загрузку файла в обновлённую базу;
- выполните операцию, которая описана в п.1.
Сейчас уже любой релиз, который выпускает 1С, не имеет таких сложностей.
Сопутствующая проблема и методы её решения
С ситуацией, описанной ранее, тесно связана ещё одна, происходящая параллельно. Выглядит она так: 10007066.
Выглядит она таким образом:
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005.
Когда происходит ошибка 1с hresult clr 80004005, программа завершает свою работу в аварийном режиме.
Если вы ознакомитесь во время загрузки программы со специальным журналом (речь идёт о технологическом журнале), там есть табличка, содержащая информацию об этих хранилищах.
С помощью средств MS SQL Server Query Analizer нужно найти в табличке несколько колонок image и сделать для каждой следующий запрос
select top 10 DATALENGTH(_Fld4044 from _InfoReg4038 order by DATALENGTH(_Fld4044) desc
При этом, со стороны стандартных проверок, проводимых платформой (chdbfl), поступит информация о том, что база полностью в порядке.
Ошибка выделения памяти hresult 80004005 (на английском это out of memory for query result 1с) может происходить вследствие различных причин, имеющей общую черту. Для системы 1С это, прежде всего, недостаток оперативной памяти. Если говорить точнее, речь идёт о некорректном применении возможностей памяти, поэтому для решения задачи лучше использовать несколько косвенных алгоритмов.
Необходимо сделать рестарт (перезапуск) сервера. Таким образом памяти, которая доступна для работы, временно станет больше. Также есть возможность воспользоваться сервером в 64 разряда, содержащем приложения.
Исходя из опыта, ошибка СУБД hresult 80004005 чаще определяется двумя факторами:
- данные хранятся в хранилище значений (реквизите);
- в таблице конфигураций содержатся двоичные данные объёмом более 120 мегабайт.
Когда советы от сотрудников 1С не приносят результата (ошибка 1с hresult 80004005 остаётся), попробуйте воспользоваться другой пошаговой инструкцией:
- используйте все базы, включив у них все фоновые задачи;
- в 8.1.11. должен появиться переключатель о запрете на фоновые задачи (во время создания базы);
- сделайте перезапуск сервера.
- воспользоваться инструментами sql и сделать бэкап;
- снять базу с поддержки;
- выгрузить cf.
Есть ещё один способ, с помощью которого неопознанная ошибка субд hresult 80004005 может быть исправлена. Нужно открыть конфигуратор и снять конфигурацию, не сохраняя её. Далее, сохранив, нужно поместить её в отдельный файл без сохранения её изменённого вида.
Выполните в SQL операцию, предназначенную для конкретной базы:
DELETE FROM dbo.Config WHERE DataSize > 125829120
После выполнения этой команды проведите загрузку сохранённой конфигурации.
Что касается радикальных шагов, используемых в особо трудных ситуациях, иногда помогает такая схема:
В процессе использования программы 1С 8.3 можно столкнуться с ошибкой СУБД: «файл базы данных поврежден» или отсутствует с указанием ссылки на используемый файл информационной базы.
Ниже будут приведены способы устранения данной ошибки.
Ошибка СУБД в 1с: способы исправления
Для начала отметим, что самым эффективным способом решения проблем с СУБД является вызов специалистов, которые имеют необходимые навыки работы с 1С. Если без должного опыта заниматься исправлением подобных проблем, есть риск потери важных данных.
Стоимость работ программиста 1С – 2000 руб./ час
Абонемент от 50 часов в месяц – 1900 руб./ час
Абонемент от 100 часов в месяц – 1800 руб./ час
Сперва необходимо применить утилиту chdbfl.exe, которая находится в директории программы, в папке bin.
Она позволит проверить на целостность подозрительную базу данных.
После запуска утилиты необходимо произвести следующие действия:
- В окне открывшейся утилиты указать путь к базе данных, которую нужно проверить (имеет вид 1Cv8.1CD).
- Установить галочку на пункте «Исправлять обнаруженные ошибки».
- Нажать кнопку «Выполнить».
Вторым способом является перезапуск SQL-сервера. При этом будут заново записаны все временные документы системы, которые и могли быть причиной, по которой возникала ошибка sql в субд 8.3.
ошибка субд 80004005
ошибка субд ошибка выделения памяти 80004005
все еще выводятся, то рекомендуется воспользоваться услугами специалистов по настройке 1С.
Читайте также: