【发布时间】:2019-06-01 10:39:57
【问题描述】:
尝试在函数应用程序中调用 SQL 查询时出现此错误。 我的计划是获取当前活动请求的数量以避免上述限制请求错误。 我看到SQL请求有这些状态:休眠、运行、后台、回滚、挂起、可运行、自旋循环、挂起。
你们知道限制错误算什么状态吗?
【问题讨论】:
-
您现在如何在代码中管理 SQL 连接?
标签: sql sql-server azure azure-sql-database
尝试在函数应用程序中调用 SQL 查询时出现此错误。 我的计划是获取当前活动请求的数量以避免上述限制请求错误。 我看到SQL请求有这些状态:休眠、运行、后台、回滚、挂起、可运行、自旋循环、挂起。
你们知道限制错误算什么状态吗?
【问题讨论】:
标签: sql sql-server azure azure-sql-database
您可以运行以下查询:
-- 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;
【讨论】:
“数据库的请求限制为30,已达到”
与上述错误相关的请求计数最有可能的状态是“正在运行”,即当前正在处理的任务。在他们的任务完成之前,所有工作人员都很忙,并且无法接手待处理的任务,因此将不接受会创建新待处理任务的传入请求。
该错误并不意味着您必须增加最大值。函数应用可能进行了太多调用。或者可能存在性能不佳的查询占用资源,从而导致完成时间过长。
如果您想增加最大值,对于 Azure SQL 数据库,从 Basic 开始的下一层将是 Standard/S0,具有 60 个并发工作人员(请求)。您可以查看所有层级及其限制here。
【讨论】: