我将EF Core与我的一个应用程序一起使用来查询Azure Sql数据库。这是无服务器的SKU,在闲置1小时后它会缩小为零(进入睡眠状态)。
现在,在该应用程序中,已调度功能可以在某些时间点查询数据库。这通常是在DB处于休眠状态的时候。为了弥补这一点,我在DbContext.cs中使用以下内容
optionsBuilder.UseSqlServer(connection, opt => opt.EnableRetryOnFailure(
maxRetryCount: 20,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null
));
如果延迟平均分配,则平均为15秒,重试20次=> 5分钟后超时。
我认为这应该足够了,因为用SSMS查询睡眠数据库时,通常需要不到1分钟的时间。但是,事实并非如此,功能会定期超时并且查询会失败。
有没有比增加超时更多的更好的方法了?5分钟真的不够吗?
干杯
我想我现在可以工作了。上面来自EF核心的代码段与任何事件都相关command timeout
。但是,由于数据库在请求期间处于休眠状态,因此这是一个connection timeout
问题。我通过提供添加Connect Timeout=120
连接字符串本身来解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句