0

私のプロジェクトはネストされたトランザクションをサポートしているため、Web サーバーとデータベース サーバーで MSDTC サービスを実行しています。プロジェクトは正常に動作しています。ただし、データベース サーバー上にデータベース ミラーリングが確立されているため、フェールオーバーが発生するたびに、ネストされたトランザクションが使用されているサイト ページでエラーがスローされます。

操作は、トランザクションの状態に対して無効です。

ミラーリング データベースでも MSTDC サービスを実行しています。この問題を克服するために何をすべきかを提案してください。

4

1 に答える 1

0

デフォルトの DTC セットアップでは、トランザクションを開始するサーバー (この場合は Web サーバー) の DTC がトランザクションを調整します。最初のデータベース サーバーがダウンすると、現在のトランザクションがロールバックされ、トランザクション コーディネーターに通知されるため、エラーが発生します。少なくとも 1 人の参加者がロールバックに投票したため、Web サーバーはトランザクションをコミットできません。

私はあなたがそれを回避できるとは思わない。ウェブサーバーがすべきことは、完全なトランザクションを再試行することです。データベース呼び出しはミラー サーバーによって処理され、成功します。

それが少なくとも私の意見です。私は、分散トランザクションや、自動フェイルオーバーを備えたデータベース クラスターに関する権限はありません...

于 2014-01-26T01:48:53.110 に答える