原則として、SQL Server フェールオーバー クラスターは、SQL Server が実際にはサーバーのクラスターであるという事実に気付かずに、アプリケーションが接続できる仮想マシンとして自身を提示します。したがって、原則として、アプリケーションのデータベース アクセス層内に追加のロジックは必要ありません。 .
私の質問は、上記が正しいかどうか、およびフェールオーバー クラスターを使用する場合に DB アクセス層がどのように動作するかについてのベスト プラクティスの変更があるかどうかです。たとえば、フェイルオーバーが発生すると、遅延が発生し、DB アクセス層でタイムアウト エラーが発生する可能性があります。その層にロジックを配置して、タイムアウトが発生したときに [一部の] DB 呼び出しを再試行することを検討しています (既に再試行があります)。 DB デッドロックのロジック)。これにより、アプリケーションに影響を与えるエラーから別のレベルの保護が提供されます。
フェールオーバー スイッチが発生し、サービス コールでタイムアウト エラーを受け取った上位のアプリケーション レベルが発生した場合、それはシームレスなスイッチオーバーではありません。フェイルオーバーが可能な期間にタイムアウトを設定するだけでよいのでしょうか?
ありがとう。