Для выполнения этого запроса недостаточно системной памяти в пуле ресурсов default
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Как включить запись событий DBMSSQL в технологический журнал?
Файл C:\Program Files\1Cv81\bin\conf\logcfg.xml должен содержать:
Пояснение
Ошибка 701 возникает, когда SQL Server не удается выделить достаточный объем памяти для выполнения запроса. Причиной нехватки памяти могут быть разные факторы, например параметры операционной системы, доступность физической памяти, использование памяти другими компонентами в SQL Server или ограничения памяти для текущей рабочей нагрузки. В большинстве случаев эта ошибка не возникает из-за сбоя транзакции. В целом, причины можно разделить на три группы.
Использование памяти внешними компонентами: диагностика и решения
Чтобы продиагностировать нехватку памяти в системе вне процесса SQL Server, используйте счетчики Системного монитора. Проверьте, имеются ли на текущем сервере потребляющие память приложения или службы помимо SQL Server, с помощью следующих счетчиков:
- Память — Доступно МБ
- Процесс — Рабочий набор
- Процесс — Байт исключительного пользования
Проверьте наличие ошибок, связанных с памятью (например, нехватку виртуальной памяти), в журнале системных событий.
Проверьте наличие ошибок памяти, связанных с приложениями, в журнале событий приложений.
Устраните все проблемы с кодом и конфигурацией для неприоритетных приложений и служб, чтобы уменьшить объем используемой ими памяти.
Если какие-то приложения помимо SQL Server потребляют ресурсы, попробуйте остановить эти приложения, изменить расписание их работы или запустить их на другом сервере. Это поможет снизить внешнюю нагрузку на память.
Похожие FAQ
10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Посмотреть все результаты поиска похожих
Эта статья посвящена SQL Server. Сведения об устранении проблем нехватки памяти в Базе данных SQL Azure см. в статье Устранение ошибок нехватки памяти в Базе данных SQL Azure.
PSSDIAG или SQL LogScout
Существует и другой, автоматический способ записи подобных точек данных — это такие инструменты, как PSSDIAG и SQL LogScout.
- Для PSSDIAG настройте сборщики данных Perfmon (Системный монитор) и Custom Diagnostics\SQL Memory Error (Настраиваемая диагностика\Ошибка памяти SQL).
- Для SQL LogScout настройте сбор данных по сценарию Memory (Память).
В следующих разделах приведены более подробные указания для каждого сценария (нехватка памяти по внешним или внутренним причинам).
Рекомендуемые действия
Если ошибка 701 возникает лишь иногда или длится короткое время, возможно, речь идет о краткосрочной проблеме с памятью, которая решается сама собой. В таких случаях предпринимать какие-либо действия может быть не нужно. Однако если эта ошибка возникает многократно, на разных подключениях и длится несколько секунд или дольше, для ее устранения действуйте предложенным ниже образом.
Далее перечислены основные шаги, которые помогут в устранении ошибок памяти.
Средства диагностики и сбор данных
Средства диагностики, позволяющие собирать данные для устранения неполадок, — это Системный монитор, sys.dm_os_memory_clerks и DBCC MEMORYSTATUS .
Настройте в Системном мониторе сбор данных с помощью следующих счетчиков:
- Память — Доступно МБ
- Процесс — Рабочий набор
- Процесс — Байт исключительного пользования
- SQL Server — Диспетчер памяти (все счетчики)
- SQL Server — Диспетчер буферов (все счетчики)
Собирайте периодические выходные данные следующего запроса на затронутом сервере SQL Server:
Внутреннее использование памяти ядром SQL Server: диагностика и решения
Начните сбор данных счетчиков Системного монитора SQL Server — Диспетчер буферов и SQL Server — Диспетчер памяти.
Запросите динамическое административное представление клерков памяти SQL Server несколько раз, чтобы узнать, где происходит наибольшее потребление памяти в ядре:
Если вы четко увидите клерк памяти, ответственный за избыточное ее потребление, сосредоточьтесь на особенностях потребления этого компонента. Вот несколько примеров:
- Если память потребляется клерком MEMORYCLERK_SQLQERESERVATIONS, определите, каким запросам выделяется большой временно предоставляемый буфер памяти, а затем оптимизируйте эти запросы с помощью индексов, перепишите их (например, удалите ORDER by) или используйте указания запроса.
- Если кэшируется большое число нерегламентированных планов запросов, то клерк памяти CACHESTORE_SQLCP будет использовать большой ее объем. Определите непараметризованные запросы, у которых планы не могут использоваться многократно, и параметризуйте эти запросы, преобразовав их в хранимые процедуры либо воспользовавшись sp_executesql или принудительной параметризацией.
- Если хранилище кэша планов объектов CACHESTORE_OBJCP потребляет много памяти, определите, какие хранимые процедуры, функции или триггеры используют большой объем памяти и, если возможно, спроектируйте приложение иным образом. Такое обычно происходит при больших объемах баз данных или схем с сотнями процедур в каждой.
- Если клерк памяти OBJECTSTORE_LOCK_MANAGER показывает большие объемы ее выделения, определите, какие запросы применяют множество блокировок, и оптимизируйте эти запросы с помощью индексов. Сократите транзакции, которые создают длительные блокировки на определенных уровнях изоляции, а также проверьте, не включено ли укрупнение блокировки.
Похожие FAQ
10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Посмотреть все результаты поиска похожих
Эта статья посвящена SQL Server. Сведения об устранении проблем нехватки памяти в Базе данных SQL Azure см. в статье Устранение ошибок нехватки памяти в Базе данных SQL Azure.
Внутреннее использование памяти независимо от SQL Server: диагностика и решения
Для диагностики потребления памяти модулями (DLL-библиотеками) внутри SQL Server используйте следующий подход.
Если SQL Server не* использует Блокировку страниц в памяти (API-интерфейс AWE), то большая часть памяти SQL Server отображается счетчиком Процесс — Байт исключительного пользования (экземпляр SQLServr ) в Системном мониторе. Общее использование памяти внутри SQL Server отражено счетчиком SQL Server — Диспетчер памяти — Общая память сервера (КБ) . Существенная разница между значениями счетчиков Процесс — Байт исключительного пользования и SQL Server — Диспетчер памяти — Общая память сервера (КБ) может с большой вероятностью возникать из-за DLL (связанного сервера, XP, SQLCLR и др.). Например, если счетчик Байт исключительного пользования показывает 300 ГБ, а Общая память сервера — 250 ГБ, то примерно 50 ГБ общей памяти процесса занято чем-то вне ядра SQL Server.
Если SQL Server использует блокировку страниц в памяти (API AWE), определить проблему будет сложнее, так как в Системном мониторе нет счетчиков для AWE, отслеживающих потребление памяти в отдельных процессах. Общее использование памяти внутри SQL Server отражено счетчиком SQL Server — Диспетчер памяти — Общая память сервера (КБ) . Значения счетчика Процесс — Байт исключительного пользования обычно в совокупности составляют от 300 МБ до 1–2 ГБ. Если счетчик Процесс — Байт исключительного пользования показывает существенно большее значение, то, скорее всего, эта разница возникает из-за DLL (связанного сервера, XP, SQLCLR и др.). Например, если счетчик Байт исключительного пользования показывает 4–5 ГБ и SQL Server использует блокировку страниц в памяти (AWE), тогда большая часть этих байт может использоваться чем-то вне ядра SQL Server. Такая методика является приблизительной.
Воспользуйтесь служебной программой tasklist для обнаружения DLL, загруженных в область SQL Server:
Вы также можете проверить загруженные модули (DLL) и посмотреть, есть ли там что-то непредусмотренное, с помощью следующего запроса:
Если вы подозреваете, что значительный объем памяти занят модулем связанного сервера, вы можете настроить для него внепроцессное выполнение, отключив параметр Допускать в ходе процесса. Дополнительные сведения см. в разделе Создание связанных серверов. Не все поставщики OLE DB для связанных серверов могут работать вне процесса. За более подробными сведениями обратитесь к производителю продукта.
В тех редких случаях, когда используются объекты OLE Automation ( sp_OA* ), вы можете настроить запуск объекта в процессе вне SQL Server, установив context = 4 (только для локального сервера OLE, т. е. EXE-файла). Дополнительные сведения: sp_OACreate.
Внутреннее использование памяти независимо от SQL Server
Нехватка памяти может быть вызвана факторами внутри процесса SQL Server. В процессе SQL Server могут использоваться компоненты, являющиеся "внешними" по отношению к ядру SQL Server. Это могут быть DLL-библиотеки, например связанные серверы, компоненты SQLCLR, расширенные процедуры (XP) и OLE Automation ( sp_OA* ). Сюда также относятся антивирусы и другие программы безопасности, которые внедряют DLL в процесс с целью мониторинга. При наличии проблем или плохой архитектуре эти компоненты могут вызвать существенное потребление памяти. К примеру, связанный сервер может кэшировать 20 миллионов строк данных, поступающих в память SQL Server из внешнего источника. Никакой клерк памяти в SQL Server не сообщит об использовании большого ее объема, хотя в процессе SQL Server происходит именно это. При росте объема памяти из-за DLL связанного сервера SQL Server начнет сокращать свое потребление памяти (см. выше) и ее станет недостаточно для компонентов внутри решения, из-за чего будут возникнут такие ошибки, как 701.
2 ответы
У вас есть 100.000 операторов вставки в одном пакетном запросе? Вашему серверу требуется больше оперативной памяти, чтобы проанализировать запрос. Купите больше ОЗУ, обновите до x64 или уменьшите размер отдельных пакетов, отправляемых на сервер. Т.е. посыпать GO то и дело в файле .sql.
Если 1000 вставок не вызывают проблем, почему 100,000 вызывают проблемы? Это как-то связано с транзакциями? Почему может помочь добавление операторов «GO»? - user242764
когда вы отправляете 100 тыс. операторов INSERT в одном пакете, сервер сначала видит около 1 млн. персонажи "вещи". Он не знает, что внутри, это могут быть только точки и пробелы. Сначала он должен быть проанализирован, а T-SQL анализируется пакетами, а не строками (в отличие от, скажем, Basic). Этот синтаксический анализ потребляет память, и вы видите эту ошибку. Когда вы пытались использовать несуществующую таблицу, сервер даже не достиг точки, когда он мог бы проверить, существует ли таблица, поскольку это происходит во время компиляции, а не во время синтаксического анализа. Сначала он должен проанализировать весь пакет, а это невозможно. - Ремус Русану
В моем случае это 1 пакет с тысячами вставок в транзакции, поэтому нельзя использовать оператор GO, и добавление дополнительной оперативной памяти не является решением. - Салим
Один GO каждые 10000 вставок устранил проблему для меня (моему процессу SQL Server назначен 1 ГБ ОЗУ) - user2518618
Вы можете попробовать приложение SQLServer Connection Tools. У него есть функция Massive Sql Runner, которая выполняет каждую команду одну за другой. Благодаря этой функции для выполнения команд сценария будет использоваться очень мало памяти, и у вас больше не будет проблемы.
Я использую SQL Server 2014 - 12.0.2269.0 (X64) в Windows Server 2012, и у меня возникают некоторые проблемы с памятью. Когда я запускаю хранимую процедуру, которая выполняет довольно «тяжелые» вычисления, я получаю ошибку примерно через 10 минут:
Недостаточно системной памяти в пуле ресурсов «по умолчанию» для выполнения этого запроса.
Мой SQL Server имеет несколько баз данных (например, 15, но они не всегда используются одновременно). Я посмотрел на файл журнала SQL Server (после того, как получил ошибку), и я увидел много таких строк:
Я также сгенерировал отчет с графиком, который показывает тот же «вывод»:
Вот, может быть, еще один полезный отчет:
Обратите внимание, что я также видел эту ошибку в журнале:
2015-12-17 12: 04: 52.37 spid70 Не удалось выделить страницу из-за нехватки памяти базы данных: FAIL_PAGE_ALLOCATION 8
Вот некоторая информация относительно памяти сервера:
Общий объем памяти на сервере: 16 Гб
Память, выделенная для сервера SQL: 12288 Мб
Используемая физическая память (с sys.dm_os_process_memory ): 9287 Мб
Если это может помочь, на сервере не размещается база данных SharePoint.
Хотя это, вероятно, не является точным ответом на вашу проблему, я все равно опубликую ее, надеясь, что она поможет вам.
То, что вы видите, - это не то, MEMORYCLERK_SQLBUFFERPOOL что MEMORYCLERK_SQLLOGPOOL занимает всю память.
Существует известная проблема с SQL 2012 SQL Server 2012 ошибки из-за нехватки памяти . Даже если вы работаете в 2014 году, есть вероятность, что вы столкнетесь с той же проблемой (хотя я не смог найти элемент подключения в 2014 году).
Также существует известная проблема как для 2014, так и для 2012 года, связанная с перестройкой индекса и always on . Вы не указали, что используете это, но, возможно, у той же ошибки есть и другие триггеры: FIX: кэш-память SQL уменьшается и увеличивается загрузка ЦП, когда вы перестраиваете индекс для таблицы в SQL Server
Поэтому мое лучшее предложение на данный момент - обновить до последней CU и посмотреть, произойдет ли это все еще, поскольку в последнее время было несколько исправлений MEMORYCLERK_SQLLOGPOOL . Поскольку вы работаете с RTM только с двумя исправлениями безопасности, которые могут иметь смысл, в SP1 + доступно несколько CU.
Так как в этой статье MEMORYCLERK_XTP используется довольно высокое использование памяти , in-memory OLTP это может помочь в устранении неполадок: мониторинг и устранение неполадок в использовании памяти
Внутреннее использование памяти компонентами SQL Server
К ошибке 701 также может приводить использование памяти внутренними компонентами ядра SQL Server. В SQL Server имеются сотни компонентов, которые отслеживают и которым выделяют память клерки памяти. Для устранения проблем необходимо определить, какие клерки памяти выделяют наибольший ее объем. Например, если вы обнаружите большой объем выделенной памяти у клерка OBJECTSTORE_LOCK_MANAGER, необходимо далее определить, почему диспетчер блокировки потребляет так много ресурсов. Возможно, какие-то запросы создают множество блокировок и их можно оптимизировать с помощью индексов, сокращения транзакций с длительными блокировками или отключив укрупнение блокировки. Каждый компонент и клерк памяти имеет свой уникальный способ доступа к памяти и ее использования. См. дополнительные сведения о типах клерков памяти и их описания.
Простые способы быстро освободить память
Чтобы освободить некоторый объем памяти для SQL Server, можно воспользоваться следующими приемами.
Проверьте следующие параметры конфигурации памяти SQL Server и попробуйте увеличить max server memory (максимальный объем памяти сервера), если это возможно:
max server memory
min server memory
Обратите внимание на нестандартные параметры. При необходимости измените их. Учтите, что требования к объему памяти возросли. Настройки по умолчанию приведены в статье Параметры конфигурации памяти сервера.
Если вы не настроили max server memory, особенно при использовании блокировки страниц в памяти, попробуйте задать конкретное значение, которое оставит некоторый объем памяти для ОС. См. параметр конфигурации сервера Блокировка страниц в памяти.
Проверьте рабочую нагрузку запросов (число параллельных сеансов и текущие выполняемые запросы) и посмотрите, имеются ли неприоритетные приложения, которые можно временно приостановить или перенести в другой экземпляр SQL Server.
Если вы запускаете SQL Server на виртуальной машине, убедитесь в отсутствии на ней избыточного выделения памяти. Некоторые принципы настройки памяти для виртуальных машин см. в статьях Virtualization – Overcommitting memory and how to detect it within the VM (Виртуализация — избыточное выделение памяти и обнаружение его на виртуальной машине) и Troubleshooting ESX/ESXi virtual machine performance issues (memory overcommitment) (Устранение неполадок с производительностью виртуальных машин ESX/ESXi (избыточное выделение памяти)).
Следующие команды DBCC позволяют освободить несколько кэшей памяти SQL Server.
Если вы используете Resource Governor, рекомендуем проверить параметры пула ресурсов или группы рабочей нагрузки и убедиться, что они не ограничивают память слишком сильно.
Если проблема сохраняется, потребуется дополнительный анализ и, возможно, увеличение серверных ресурсов (ОЗУ).
У меня есть работающая служба, которая получает 50-100 запросов в минуту. И это не дорогие запросы. Сервис работает без ошибок около 3-4 месяцев.
Неожиданно несколько дней назад он начал давать «Недостаточно системной памяти в пуле ресурсов по умолчанию для выполнения этого запроса». ошибка иногда. Когда я исследовал проблему, я увидел, что использует ~ 1,5 ГБ оперативной памяти и% 25 ЦП (всего 1/4 ЦП). И когда я перезапустил , оперативная память начинается с ~ 50 МБ и медленно увеличивается, пока не станет ~ 1,5 ГБ, что приводит к сбоям в приложениях, использующих его.
После небольшого исследования я решил, что это вызвано используемой мной версией сервера sql. Это было экспресс-издание, ограничивавшее количество тем. Итак, я обновил свой sql-сервер с '2008r2 экспресс' к 'Предприятие 2012 года'. Когда я запустил службу, я подумал, что мои проблемы наконец-то закончились, поскольку служба использует только ~ 60 МБ памяти, но через час, к сожалению, возникла такая же проблема, но на этот раз используемая память, которую я вижу в диспетчере задач Windows, все еще составляет ~ 60 МБ не превышая никаких ограничений.
Я использую как ORM в сервисе wcf. И вместе с этим у меня есть система (брокер и прочее) для некоторых операций кеширования.
Я упустил некоторые важные моменты конфигурации? Или 6гб памяти и моих 4 ЦП реально для этого мало? Но этого не может быть, потому что одна и та же нагрузка была такой в течение 3 месяцев, и тогда не было никаких ошибок, и нет никаких изменений кодов.
- 6 Вы просто перешли с Express на Enterprise? Бесплатно? Где я могу получить эту потрясающую сделку ?!
- покажите свой код, вы, должно быть, истощаете ресурсы сервера, не очищая соединения .
- 2 Если у вас есть компания, Microsoft предлагает ее с программой bizspark. Предлагаю вам это проверить.
- Что установлено в MaxMemory для SQL Server? Это 32-битный или 64-битный?
- Я использую операторы , когда собираюсь каждый раз подключаться к базе данных. Так что я уверен, что не позволю какой-либо связи оставаться открытой. И моя система 64-битная. И 6144 МБ - это максимальный объем памяти сервера, который я установил в свойствах сервера.
SQL Server будет начинать с необходимого объема памяти, а затем постепенно наращивать объем, пока не израсходует все, что выделено ему в свойствах сервера:
Он не освободит какую-либо часть этой памяти, пока служба не будет перезапущена; это задумано.
Обычно рекомендуется оставлять для ОС 2 ГБ, и вам нужно помнить о любой другой обработке, выполняемой на том же сервере, что и SQL. Обычно рекомендуется иметь SQL Server на собственном сервере, и на нем больше ничего не работает.
Тем не менее 1,5 ГБ оперативной памяти для SQL Server - это не так уж и много. Если у вас нет других доступных, возможно, пришло время добавить некоторые или обновить сервер.
Смотрите также: Technet, Brent Ozar
- Нет, это не так. На этой машине сейчас у меня 12 ГБ оперативной памяти, и у меня много доступной памяти. Я могу легко увеличить объем памяти в любое время. И что самое забавное, теперь sqlervr.exe, похоже, никогда не использует больше 70 МБ.
- Но он все равно вылетает с этим исключением памяти примерно через 1 час.
- @TolgaEvcimen есть ли на этом сервере другие программы? Сколько физической памяти вы используете, по словам resmon.exe?
- @TolgaEvcimen, сколько памяти sys.dm_os_sys_info и sys._dm_os_performance_counters показывают, что sql использует и сколько доступно?
- 1 Продолжим это обсуждение в чате.
Я отправляю этот ответ, потому что кому-то он может быть полезен.
Вы можете установить даже с помощью этого запроса:
Также вы можете использовать этот запрос для освобождения памяти без перезапуска службы просто установив значение 2 ГБ (2048) и снова вернувшись к 32 ГБ (32768) или выбрав желаемое значение.
Пожалуйста, не устанавливайте его ниже 1 ГБ, потому что это вызовет ошибки при выполнении запросов, и поэтому вам нужно будет перезапустить службу, чтобы иметь возможность выполнять запросы, даже этот запрос, чтобы снова увеличить память.
В нашем случае это произошло из-за типов таблиц, оптимизированных для памяти, с огромным объемом данных. Одновременно было несколько вызовов разных хранимых процедур, каждая из которых использовала один и тот же тип таблицы и загружала в нее огромное количество записей (> 100 000). Для нашего приложения был способ пропустить вставку данных в тип таблицы и использовать ее только в особых случаях.
Недостаточно системной памяти в пуле ресурсов "default" для выполнения этого запроса.
Я просто выполняю 100,000 85,000 простых операторов вставки, как показано ниже. Получил ошибку примерно на XNUMX-тысячной вставке.
Это демонстрация урока, который я беру .
Заранее спасибо, Джим М.
Обновление: только что заметил кое-что очень интересное. Я создал другую базу данных, забыл создать таблицу SampleData. Я выполнил запрос, чтобы добавить 100,000 100,000 строк, и он получил ошибку нехватки памяти еще до того, как пожаловался, что таблица не существует. Таким образом, я предполагаю, что ему не хватает памяти, просто пытаясь «прочитать» мои XNUMX XNUMX строк?
Использование памяти внешними компонентами или ОС
Какой-то внешний по отношению к процессу компонент может использовать большой объем памяти, из-за чего ее может не хватать для SQL Server. Необходимо выяснить, есть ли в системе другие потребляющие память приложения, которые вызывают ее нехватку. SQL Server — одно из немногих приложений, которое при запросе памяти со стороны ОС сокращает свое использование ресурсов. То есть, когда какое-то приложение или драйвер просит выделить себе память, ОС отправляет сигнал освободить память всем приложениям и SQL Server удовлетворяет этот запрос. Мало какие приложения действуют так же, поскольку они не предусматривают ответ на это уведомление. Таким образом, если SQL начинает сокращать свое использование памяти, его пул памяти уменьшается и нуждающиеся компоненты могут ее не получить. В результате начинает возникать ошибка 701 и другие ошибки, связанные с памятью. Дополнительные сведения см. в разделе Архитектура памяти SQL Server
Читайте также: