SqlException执行超时执行轻量级查询时过期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlException执行超时执行轻量级查询时过期相关的知识,希望对你有一定的参考价值。

我看到一个非常奇怪的超时异常似乎是一个非常轻量级的查询,我不知道为什么。

查询看起来像这样

var locationId = 9;

var quantities = db.OrderDetails
                   .Where(d => d.ANullableDate == null
                               && d.Order.LocationId == locationId 
                               && d.AnotherNullabelDate == null
                               && d.ABooleanValue)
                   .Select(d => new { d.SkuId, d.Quantity })
                   .GroupBy(d => d.SkuId)
                   .ToList()
                   .ToDictionary(grp => grp.Key, grp => grp.Sum(x => x.Quantity));

关于这个的几点说明:

  • 当locationId不是9时,这很好
  • 昨天工作得很好。
  • 这在我的机器上运行正常。
  • 当我配置它以在天蓝色中使用DB时,它在我的机器上运行正常。
  • 如果我从Azure门户中提取与此查询相关的原始SQL并直接针对Azure DB运行它,它可以正常工作。
  • 此查询非常简单,并且与未发生故障的其他查询相比,使用的数据要少得多。
  • 我通过可以找到“https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connectivity-issues”的查询搜索问题事件,并且在问题发生的时候没有出现任何问题。
  • 如果你对Select电话和ToList电话感到好奇,那么这些是我在听到这个问题后尝试的东西(它们没有用)。

我完全不知道这可能是什么问题。我应该寻找什么?

更新:

它现在正在运作。我在它再次开始工作之前做的最后一件事是将数据库从S4降级到S3(我这样做是因为S4配置在公共预览中)。

将其缩放到S4并没有导致问题再次开始发生,因此我无法真正假设缩放是修复它的原因。我仍然不知道出了什么问题。

答案

该交易可能会因未完成的交易而被阻止。当您向上/向下扩展层时,将回滚打开的事务。现在记录没有锁定数据修改。

以上是关于SqlException执行超时执行轻量级查询时过期的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate - “GenericADOException:无法执行查询”

System.Data.SqlClient.SqlException(等待操作超时)仅在调试时

Connect the Cities(prim)用prim都可能超时,交了20几发卡时过的

直接执行sql语句查询很快,在程序中报sql超时。

如何为查询执行设置语句超时

EF 执行查询请求超时,数据多。