加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 如何在Azure角色中解决与SQL Azure连接的突然丢失?

发布时间:2020-12-12 16:10:17 所属栏目:MsSql教程 来源:网络整理
导读:我的Azure角色 grabs stuff to process from a database – 它包含一个System.Data.SqlClient.SqlConnection的实例,并定期创建一个SqlCommand实例并执行一个SQL查询. 现在一段时间(通常是几天),运行一个查询会触发一个SqlException异常 The service has encou
我的Azure角色 grabs stuff to process from a database – 它包含一个System.Data.SqlClient.SqlConnection的实例,并定期创建一个SqlCommand实例并执行一个SQL查询.

现在一段时间(通常是几天),运行一个查询会触发一个SqlException异常

The service has encountered an error processing your request. Please try again. Error code 40143.
A severe error occurred on the current command. The results,if any,should be discarded.

我已经看过很多次,现在我的代码捕获它,在SqlConnection实例上调用Dispose(),然后重新打开连接并重试查询.后者通常导致另一个SqlException异常

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

这看起来很像SQL Azure服务器没有响应或由于任何原因不可用.

目前我的代码没有捕获后一个异常,它会在RoleEntryPoint.Run()之外传播,角色重新启动.重新启动通常需要大约十分钟,一旦完成,问题就消失了一天左右.

我不喜欢我的角色重新启动 – 需要一段时间,我的服务功能受到阻碍.我想做点更聪明的事情

解决这个问题的策略是什么?我应该重试几次,多少次,间隔多久?我应该做别的事吗什么时候放弃,让角色刚刚重启?

解决方法

我强烈建议您看看 Transient Fault Handling Framework for SQL Azure

这将有助于您处理连接和查询尝试的重试逻辑,我在生产中使用它,它的工作原理很好.还有一个很好的文章on technet可能有一些用处.

[编辑:2013年10月17日]

看起来这是由The Transient Fault Handling Application Block的模式和实践团队拾起的

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读