这是什么意思以及如何解决。
我正在运行多线程c#应用程序,访问数据库时会发生此错误。
查询处理器无法为并行查询执行启动必要的线程资源。
我在每个查询中使用“using statements”,所以我认为连接在使用后会被处理掉。
我如何监控造成这种情况的原因?这是在一段时间后开始发生的,至少在1小时后开始。
Windows 7 64位sp1 16 gb ram visual studio 2010 mssql 2008 r2核心i7 2600 @ 4.5 ghz
答案 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,所以我将MAXDOP设置为24,结果是同样的错误,但是当我将MAXDOP设置为1并执行查询时它起作用,不确定副作用但是我再次设置它回到24,等于处理器的数量。
希望这可以帮助你!!!!