现在一段时间(通常是几天),运行一个查询会触发一个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()之外传播,角色重新启动.重新启动通常需要大约十分钟,一旦完成,问题就消失了一天左右.
我不喜欢我的角色重新启动 – 需要一段时间,我的服务功能受到阻碍.我想做点更聪明的事情
解决这个问题的策略是什么?我应该重试几次,多少次,间隔多久?我应该做别的事吗什么时候放弃,让角色刚刚重启?
解决方法
这将有助于您处理连接和查询尝试的重试逻辑,我在生产中使用它,它的工作原理很好.还有一个很好的文章on technet可能有一些用处.
[编辑:2013年10月17日]
看起来这是由The Transient Fault Handling Application Block的模式和实践团队拾起的