由于某种原因,您无法从变量设置 MAXDOP 量。 有办法解决吗?
我不想使用动态 SQL...
DECLARE @int INT = 1
SELECT COUNT(*) AS MyCount FROM dbo.TableName
OPTION (MAXDOP @int);
我使用的是 SQL Server 2014
更新: 我的疯狂背后还有更多的原因。我们希望了解 Purchasing 是如何运行的,并通过表中的值控制 MAXDOP,如果它正在终止服务器,我们希望在不更改代码的情况下减少 MAXDOP。
最佳答案
There is more to my reason behind my madness. We want to see how say Purchases is running and control the MAXDOP from a value in a table, if it is killing the server we want to reduce the MAXDOP without changing the code.
您正在描述Resource Governor 。您应该将这些查询分类到非关键资源池中,并限制它们可以消耗的资源。该链接包含详细信息,因为这是一个很长的主题。
郑重声明,有一种方法可以控制查询的 DOP,无需更改 SQL 文本:plan guides :
sp_create_plan_guide
@name = N'Guide2',
@stmt = N'SELECT COUNT(*) AS MyCount FROM dbo.TableName',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (MAXDOP 1)';
@hints
仍然是动态 SQL。计划指南适用于同一查询文本的每次执行。我认为资源治理在各个方面都是优越的。
关于sql-server - SQL - MAXDOP - 来自变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879252/