私の Azure Web サービスには、SQL Azure でストアド プロシージャを呼び出すコードがあります。場合によっては、ストアド プロシージャは完了しますが、その後接続が切断され、呼び出し元が次のようにSqlException
要求されることがあります。Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
呼び出し元は接続を再開し、同じコードを再実行しようとします。問題は、コードが最初にデータベース テーブルに「正しい状態」が格納されていることを確認し、上記のストアド プロシージャが既に実行されているため、データベースの状態が変更されているため、チェックが失敗して例外がスローされることです。
したがって、問題は、呼び出しコードが「例外なし」が「データベース変更OK」に等しいという条件に依存しているため、例外があった場合、データベースは変更されていないことです。この場合、データベースの変更が発生した後の一時的な接続の問題が原因で例外が発生するため、想定が間違っていることが判明します。
そのような場合に対処する一般的な方法は何ですか?