2

SQL Serverフェールオーバークラスターまたはミラーを備えた環境で、エラーをどのように処理しますか?2つのオプションがあるようです。

  1. 現在のクライアント要求全体を失敗させ、ユーザーに再試行させます
  2. DALでエラーをキャッチし、そこで再試行します

それぞれのアプローチには長所と短所があります。私が一緒に仕事をしたほとんどの店は#1を行っていますが、それらの多くは厳密な取引の境界に従わず、失敗した場合に問題を抱えているように見えます。それでも、#2に話しかけるのに問題があります。これにより、ユーザーエクスペリエンスも向上するはずです(フェイルオーバーが発生するまでの遅延が長くなる可能性があります)。

いずれかの方法での議論をいただければ幸いです。2番目のアプローチを使用する場合、実装を簡素化するのに役立つ標準ラッパーがありますか?いずれにせよ、失敗したコマンドのべき等性の欠如に関連する問題などを回避するために、コードをどのように構成しますか?

4

1 に答える 1

0

2番目は無限ループである可能性があります。ネットワークに関連している場合、またはローカルPCを再起動する必要がある場合などはどうなりますか?

もちろん、1番はユーザーにとって迷惑です。

Webサイト経由のアクセスのみを許可する場合、フェイルオーバーが通話中に発生しない限り、エラーは表示されません。私たちにとって、これはありそうもないことであり、エンドユーザーが気付かないうちにフェイルオーバーしました。

実生活では、Webサーバー上にクリーンなDALがない場合があります。接続が維持されているExcelシート接続(ほとんどの財務)またはWinFormsがある場合があるため、オプションは1つだけです。

フェイルオーバーはとにかく数秒しかかからないはずです。DBリカバリにそれ以上かかる場合は、とにかく大きな問題が発生します。そして、それがそれを処理することを考えなければならないほど頻繁に起こるなら、まあ...

要約すると、あなたが知りたいと思うことはめったになく、1番の方が良いでしょう。私見では。

于 2009-12-13T07:45:56.713 に答える