SQL Azure中的连接超时

Nis*_*ddy 2 azure-sql-database

我在我的azure asp.net网站上使用SQL Azure.有一段时间,sql aerver连接没有打开,我看到这个异常消息(本地和现场):

连接超时已过期.在登录后阶段过去了超时时间.在等待服务器完成登录过程并响应时,连接可能已超时; 或者在尝试创建多个活动连接时可能会超时.

有人可以解释这些原因,并为此做出合适的解决方案吗?

Luk*_*ett 5

正如Sharptooth在评论中指出的那样; 您将在SQL Azure上更频繁地获得瞬态错误.Microsoft提供了Transient Fault Handling Block,它可以解决常见的连接问题; 允许您定义检测策略并重试策略.

有关瞬态故障处理块的功能,请参阅此处,以及HERE,以获取有关如何将其添加到应用程序的指南(谢天谢地,您可以使用NuGet).

处理块主要像连接周围的try/catch块一样工作; DetectionStrategy如果错误与策略中指定的错误匹配,则使用a捕获常见连接错误然后重试连接.

我们使用LinqToSQL和工作区模式; 包裹我们连接的块看起来像这样:

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;
}
Run Code Online (Sandbox Code Playgroud)

我们现在已经使用了一段时间,它为我们缓解了大部分问题.