数据库的请求限制为30,并且已达到该请求的请求状态数?

时间:2019-06-01 10:39:57

标签: sql sql-server azure azure-sql-database

当尝试在Function App中调用SQL查询时遇到此错误。 我的计划是获取当前活动请求的数量,以避免上面的限制请求错误。 我看到SQL请求具有以下状态:休眠,运行,后台,回滚,挂起,可运行,spinloop,已暂停。

你们知道极限错误计数的哪些状态吗?

2 个答案:

答案 0 :(得分:0)

您可以运行以下查询:

-- Run on master
SELECT * FROM sys.resource_stats ORDER BY end_time DESC;  

SELECT * FROM sys.dm_db_resource_stats ORDER BY end_time DESC; 

您可以检查这些查询的max_session_percent和max_worker_percent值。

我的建议是在查询中添加OPTION(MAXDOP 1)或在数据库级别设置最大并行度。

ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1;

答案 1 :(得分:0)

“数据库的请求限制为30,并且已达到”

最有可能与上述错误有关的请求计数或您应该查看的状态为“正在运行”-当前正在处理的任务。所有工作人员都忙于任务完成,无法接管待处理的任务,因此将不会接受将创建新的待处理任务的传入请求。

"The maximum number of sessions and workers are determined by the service tier and compute size (DTUs and eDTUs). New requests are rejected when session or worker limits are reached, and clients receive an error message."

该错误并不意味着您必须增加最大值。该功能应用可能调用过多。否则,可能会有性能不佳的查询占用资源,从而导致较长的完成时间。

如果要增加最大值,对于Azure SQL数据库,从Basic出发的下一层是Standard / S0,具有60个并发工作程序(请求)。您可以看到所有层及其限制here