Обработчик запросов не смог запустить необходимые ресурсы потока для параллельного выполнения запроса

Что это значит и как решить.

Я запускаю многопоточное приложение С#, и эта ошибка возникает при доступе к базе данных.

Обработчику запросов не удалось запустить необходимые ресурсы потока для параллельного выполнения запроса.

Я использую «операторы использования» в каждом запросе, поэтому я полагаю, что соединения удаляются после использования.

Как я могу контролировать, что вызывает это? Это начинает происходить через некоторое время, например, по крайней мере, через 1 час.

Windows 7 64-разрядная версия SP1 16 ГБ оперативной памяти Visual Studio 2010 mssql 2008 r2 core i7 2600 @ 4,5 ГГц


person MonsterMMORPG    schedule 17.10.2011    source источник
comment
Это ошибка, исходящая непосредственно от вашего SQL-сервера, что в основном означает, что ему не хватает ресурсов. Либо ваш сервер ДЕЙСТВИТЕЛЬНО занят в данный момент, либо у вас где-то утечка памяти. Используйте профилировщик памяти, чтобы увидеть, можете ли вы обнаружить утечки памяти собственных ресурсов.   -  person Polity    schedule 17.10.2011


Ответы (4)


Проблема указывает на то, что ваши потоки SQL-сервера уже заняты и не могут выделить другие потоки для обработки вашего запроса. Вы также можете попробовать включить параметр MARS (несколько активных наборов результатов) в строке подключения, установив для него «MultipleActiveResultSets=true», если вы выполняете несколько пакетов.

person Unavailable    schedule 17.10.2011

На dba.stackexchange.com есть гораздо лучший ответ с дополнительным обсуждением и подробностями.

https://dba.stackexchange.com/questions/47237/need-to-understand-parallel-query-execution-error

person Adrian Carr    schedule 06.12.2013

Эта ошибка связана с построением плана выполнения, который пытается распараллелить сложные запросы. Он отображается немедленно, запрос не ждет тайм-аута. Простые запросы работают как шарм.

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

person Jan Zahradník    schedule 25.04.2013
comment
Хорошее предложение. вы можете добавить это как подсказку запроса: SELECT ... FROM ... OPTION (MAXDOP 1); - person smoore4; 10.11.2019

У меня была та же проблема, я пытался создать индекс, но получил сообщение об ошибке «Процессор запросов не смог запустить необходимые ресурсы потока для параллельного выполнения запроса». Моя настройка MAXDOP была равна 64, я проверил количество процессоров, которые я есть - их было 24, поэтому я установил MAXDOP на 24, результат был той же ошибкой, но когда я установил MAXDOP на 1 и выполнил запрос, он сработал, не уверен насчет побочных эффектов, но снова я установил его обратно на 24 что равно количеству процессоров.

Надеюсь, это поможет вам !!!!

person SreekanthCHAVA    schedule 24.08.2014