gpt4 book ai didi

azure-sql-database - SQL Azure 中的连接超时

转载 作者:行者123 更新时间:2023-12-02 21:59:19 25 4
gpt4 key购买 nike

我在我的 azure asp.net 网站中使用 SQL Azure。有时,sql aerver 连接无法打开,我会看到此异常消息(本地和实时站点上):

连接超时已过期。登录后阶段超时时间已过。在等待服务器完成登录过程并响应时,连接可能超时;或者它可能在尝试创建多个事件连接时超时。

有人可以解释一下这些问题的原因以及合适的解决方案吗?

最佳答案

正如 Sharptooth 在他的评论中指出的那样;在 SQL Azure 上您会更频繁地遇到暂时性错误。 Microsoft 提供了Transient Fault Handling Block它解决了常见的连接问题;允许您定义检测策略和重试策略。

参见HERE有关 transient 故障处理 block 功能的简要概述和 HERE有关如何将其添加到您的应用程序的指南(幸运的是您可以使用 NuGet)。

处理 block 主要像连接周围的 try/catch block 一样工作;它使用 DetectionStrategy 捕获常见连接错误,然后在错误与策略中指定的错误匹配时重试连接。

我们将 LinqToSQL 与工作区模式一起使用;包装我们连接的 block 如下所示:

private const int DELAYMILLISECONDS = 250;

private const int MAXRETRIES = 10;

public static ApplicationDatabaseDataContext Create(string connectionString)
{
var policy = new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(
MAXRETRIES,
TimeSpan.FromMilliseconds(DELAYMILLISECONDS));

var applicationDatabaseDataContext =
policy.ExecuteAction(() => GetDataContext(connectionString));

return applicationDatabaseDataContext;
}

我们已经使用该 block 一段时间了,它为我们缓解了大部分问题。

关于azure-sql-database - SQL Azure 中的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com