我的 Azure 角色从数据库中获取要处理的内容- 它拥有一个实例System.Data.SqlClient.SqlConnection
并定期创建一个SqlCommand
实例并执行 SQL 查询。
现在偶尔(通常几天一次)运行查询将触发SqlException
异常
服务在处理您的请求时遇到错误。请再试一次。错误代码 40143。当前命令出现严重错误。结果,如果有的话,应该丢弃。
我已经看过很多次了,现在我的代码捕捉到它,调用Dispose()
实例SqlConnection
,然后重新打开连接并重试查询。后者通常会导致另一个SqlException
异常
超时已过。在操作完成之前超时时间已过或服务器没有响应。
这看起来很像 SQL Azure 服务器由于某种原因没有响应或不可用。
目前我的代码没有捕捉到后一个异常,它被传播到外部RoleEntryPoint.Run()
并重新启动角色。重新启动通常需要大约十分钟,一旦完成,问题就会消失一天左右。
我不喜欢我的角色重新启动 - 这需要一段时间,而且我的服务功能受到阻碍。我想做一些更聪明的事情。
解决这个问题的策略是什么?我应该多次重试查询,多少次以及间隔多长时间?我应该做点别的吗?我什么时候放弃,让角色重新开始?