.net – 如何在Azure角色中解决与SQL Azure连接的突然丢失?
我的Azure角色
grabs stuff to process from a database – 它包含一个System.Data.SqlClient.SqlConnection的实例,并定期创建一个SqlCommand实例并执行一个SQL查询.
现在一段时间(通常是几天),运行一个查询会触发一个SqlException异常
我已经看过很多次,现在我的代码捕获它,在SqlConnection实例上调用Dispose(),然后重新打开连接并重试查询.后者通常导致另一个SqlException异常
这看起来很像SQL Azure服务器没有响应或由于任何原因不可用. 目前我的代码没有捕获后一个异常,它会在RoleEntryPoint.Run()之外传播,角色重新启动.重新启动通常需要大约十分钟,一旦完成,问题就消失了一天左右. 我不喜欢我的角色重新启动 – 需要一段时间,我的服务功能受到阻碍.我想做点更聪明的事情 解决这个问题的策略是什么?我应该重试几次,多少次,间隔多久?我应该做别的事吗什么时候放弃,让角色刚刚重启? 解决方法我强烈建议您看看 Transient Fault Handling Framework for SQL Azure这将有助于您处理连接和查询尝试的重试逻辑,我在生产中使用它,它的工作原理很好.还有一个很好的文章on technet可能有一些用处. [编辑:2013年10月17日] 看起来这是由The Transient Fault Handling Application Block的模式和实践团队拾起的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |