Windows Azure には、一時的なエラー処理アプリケーション ブロックを使用した再試行ロジックがあり、ワーカー ロールで期待どおりに機能しました。ただし、最近 SQL Azure データベースをフェデレーションにアップグレードしたところ、それ以来いくつかの問題が発生しています。
worker ロールが、特定のストアド プロシージャが存在しないと言うことがあります。これは、実行ループで毎秒チェックするストアド プロシージャです。ロールは各シャードをループし、各シャード データベースでストアド プロシージャを実行します。これはすべて正常に機能しますが、非常にまれに、TransientFaultHandling 接続が再試行されたことを示すコール スタックを含むストアド プロシージャが見つからないというエラーがログに記録されます。
私たちのコードは単純に接続を作成し (開いたままにしておく)、シャードに接続してからストアド プロシージャを実行するので、一時的な障害が発生して接続を再試行すると、最終的に接続が再接続される可能性があると考えられます。接続されていたシャードの代わりにルートデータベース?
私の質問は、TransientFaultHandling ブロックがこれを正しく考慮し、接続を再試行するときに正しいシャードに再接続するかどうかです。そうでない場合、そうするためのベスト プラクティスはありますか?
ありがとうガレス