查询处理器无法为并行查询执行启动必要的线程资源

时间:2011-10-17 03:27:23

标签: c# multithreading resources processor

这是什么意思以及如何解决。

我正在运行多线程c#应用程序,访问数据库时会发生此错误。

查询处理器无法为并行查询执行启动必要的线程资源。

我在每个查询中使用“using statements”,所以我认为连接在使用后会被处理掉。

我如何监控造成这种情况的原因?这是在一段时间后开始发生的,至少在1小时后开始。

Windows 7 64位sp1 16 gb ram visual studio 2010 mssql 2008 r2核心i7 2600 @ 4.5 ghz

4 个答案:

答案 0 :(得分:7)

在dba.stackexchange.com上有更多的讨论和细节,有一个更好的答案。

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

答案 1 :(得分:5)

问题表明您的SQL服务器线程已经忙,无法分配任何其他线程来处理您的请求。如果您正在执行多个批次,也可以通过将其设置为“MultipleActiveResultSets = true”来尝试在连接字符串中启用MARS(多个活动结果集)选项。

答案 2 :(得分:0)

此错误来自构建执行计划,该计划尝试并行化复杂查询。它立即显示,查询不等待超时。简单的查询就像一个魅力。

解决方法是通过将其设置为1来禁用Max degree of parallelism。我不确定此设置的性能影响,但由于服务器上有许多并发查询,因此不应该是一个问题

答案 3 :(得分:0)

我有同样的问题,我试图创建索引,但我收到错误“查询处理器无法为并行查询执行启动必要的线程资源”,我的MAXDOP设置为64,我检查了数字我有的CPU - 它们是24,所以我将MAXD​​OP设置为24,结果是同样的错误,但是当我将MAXD​​OP设置为1并执行查询时它起作用,不确定副作用但是我再次设置它回到24,等于处理器的数量。

希望这可以帮助你!!!!