SQL Azure中的连接超时

时间:2013-06-20 13:49:11

标签: azure-sql-database

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

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

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

1 个答案:

答案 0 :(得分:5)

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

有关瞬态故障处理块的功能的简要概述,请参见HERE;有关如何将其添加到应用程序的指南,请参见HERE。(谢天谢地,您可以使用NuGet)。

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

我们将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;
}

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