在我的 Azure Web 服务中,我有调用 SQL Azure 中的存储过程的代码。有时会发生这种情况,以便存储过程完成,但之后连接断开,调用者得到一个SqlException
声称Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
然后调用者将重新打开连接并尝试重新运行相同的代码。问题是代码首先检查数据库表是否存储“正确的状态”,并且由于上述存储过程已经运行,数据库状态已经改变,因此检查失败并抛出异常。
所以问题是调用代码依赖于“无异常”等于“数据库更改正常”的条件,因此如果出现异常,则数据库没有更改。在这种情况下,例外是由于发生数据库更改后的临时连接问题,因此假设结果是错误的。
处理此类情况的典型方法是什么?