1С недостаточно памяти для выполнения запроса

Ошибка «Недостаточно памяти» в 1С 8.3 и 8.2 является не такой уж и редкой. Ее можно встретить и в конфигураторе (например, при сравнении конфигураций), а так же в режиме «1С:Предприятие» при выполнении трудоемких обработок: например при записи большого файла формата base64.

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

Все дело в том, что в 32-х разрядных операционных системах по умолчанию 2 ГигаБайта на различные программы и столько же для операционной системы. В 64-х разрядных ОС выделяемый на приложения объем памяти составляет уже 4 ГигаБайта.

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

Конечно же, первый способ лучше и предпочтительнее, но если в данный момент, либо вообще вы не можете им воспользоваться, то можете воспользоваться вторым.
Дня начала перейдите в командную строку операционной системы. Для этого перейдите в меню «Пуск» и вверите в строке поиска «cmd».

Перед вами отобразится поиск программ. Выберите ту, что называется «cmd».

Так же командную строку можно открыть при помощи комбинации горячих клавиш Windows + R.

В открывшемся окне наберите следующую команду и так же нажмите «Enter»:

bcdedit /set increaseuserva 3200

В данном случае вы увеличите объем адресной памяти до 3200 МегаБайт.

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

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

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

bcdedit /deletevalue increaseuserva

Обратите внимание, что при часто встречающийся ошибке «Нехватка памяти» в 1С так же может помочь удаление помеченных объектов. Возможно, в программе их накопилось очень много и программе сложно обрабатывать такие объемы данных. Если и этот способ не помог, то вам следует увеличить разрядность операционной системы Windows.

В XP не работает данная команда

Для Windows XP/2003 – добавлением ключа /3GB в файле Boot.ini
Только загугли как это правильно сделать, чтобы не угробить загрузку системы)

А если система и так х64? х128 Вроде пока не выпустили:) И что делать тогда?

А это что то меняет? Распределение памяти работает аналогично как я понял, так что спокойно увеличивай объём, который выделяется для приложений используя метод приведённый выше.

Из 5 рабочих мест такая ошибка вылезала только на одном, хотя оно ничем особо не отличалось от остальных. Все рабочие места на WinXP, файловая база в сетевой папке (около 7 гб).

Причем в момент возникновения ошибки в диспетчере задач показывалось, что занятой памяти на ПК 1.2 гб и свободной еще 2 гб.

Вылечилось очень неожиданным способом. ПК с 4 гб памяти и интегрированным видео Intel. Зашел в БИОС, выставил видеоадаптер iGPU (было Авто), размер видеопамяти 64 мб (было Авто).

Всё, проблема решилась, в 1С перестала вылезать ошибка о нехватке памяти. Даже /3GB в boot.ini не стоит (/userva тоже отсутствует). Да и количество занятой и свободной памяти в диспетчере задач как бы намекает, что в данном случае эти опции ничего не изменят.

Видимо, объем видеопамяти в режиме Авто, равный вроде 512 мб, занимает большой диапазон в зарезервированном адресном пространстве (выше 3.34 гб, того объема памяти, который показывается в Windows, но ниже 4гб). Остальные устройства тоже занимают какие-то адреса в этом пространстве, и, возможно, пересекаются с адресами реальной памяти. То есть система пытается выделить блок памяти близко к 3.34 гб и получает облом (т.к. по этому адресу оказывается память какого-нибудь устройства). В результате в 1С вылазит ошибка.

А когда видеопамяти всего 64 мб, остального пространства адресов хватает, чтобы разместились адреса всех устройств, и они не пересекаются с реальной памятью. Соответственно, к каким бы ячейкам памяти из имеющихся в Windows 3.34 гб ни обратилась программа, все сработает нормально, никаких ошибок не будет.

Такая ошибка может начать возникать при длительной работе сервера 1С 8.3 без перезагрузки.

Ниже рассмотрим причину и решение данной проблемы.

Причина Ошибка SDBL. Недостаточно памяти для выполнения запроса

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

При этом часть адресного пространства оказывается недоступной для повторного использования, то есть объем доступного пространства постепенно уменьшается.

Особенно часто эта ошибка при «тяжелых» действиях: выполнения больших запросов, реструктуризации базы данных и тп.

Система сообщает то, что «расходуется» НЕ физическая память (RAM), а именно адресное пространство — виртуальный набор уникальных «ячеек», доступных приложению для размещения информации.

Решение ошибки

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

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

После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Prov >
Решение проблемы:

1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация — "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.

Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать — Процесс", галочкой Включить процесс.

Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов

По поводу перезапуска рабочих процессов — с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.

Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.

Источник: raw8.ru

Как включить запись событий DBMSSQL в технологический журнал?


[an error occurred while processing the directive]
Карта сайта