Azure SqlException:服务器上的数据库当前不可用

时间:2014-04-21 08:13:32

标签: asp.net azure azure-sql-database dapper

我们的网站在Azure中运行了几周而没有收到此错误:

  

SqlException:数据库'数据库'在服务器'服务器'目前不是   可用。请稍后重试连接。如果问题   坚持,联系客户支持,并为他们提供会话   跟踪ID#guid'。

有一天,当有超过2K的活跃(并发)用户时,它终于得到了。这是the closest question,我可以在SO中找到。我们不使用EF,而是使用Dapper。我没有想法如何调试我们的应用程序以找出导致问题的原因,而且现在这个问题在过去2天内没有出现更加困难。我当然需要留意,我需要你们,任何提示,我应该在哪里研究,我需要做些什么来确定问题的原因,并可能解决它。

2 个答案:

答案 0 :(得分:4)

听起来你需要通过某种瞬态故障处理机制来处理瞬态故障。这是帖子提出类似的问题: SQL Azure Database retry logic大卫的答案类似于我们处理这个问题的方法。

这是一些代码的另一个链接,类似于David和我们的解决方案来解决它。 http://www.getcodesamples.com/src/4A7E4E66/41D6FAD

当我们第一次迁移到SQL Azure时,我们遇到了类似的问题,但是通过为瞬态连接实现退避重试逻辑,大部分时间它会在几秒钟后恢复。

答案 1 :(得分:1)

我们使用Azure Transient Fault Block处理了暂时性错误的路径,但是这会导致更大的问题 - 即,如果达到SQL连接限制(easy to do),则仅使用重试逻辑{ {3}}

如果它每个月只发生一次,我就把它留下来,然后优雅地在堆叠上方处理它。另一种方法是创建一个makes things worse以避免重试某些错误,但它可能仍然弊大于利。