SQL Server ミラーリングをサポートしたいアプリケーションがあります。ただし、アーキテクチャは現在、複数の WCF サービスと DB 接続が 1 つの MSDTC トランザクションに参加するようなものであり、ミラーリングを使用する場合、Microsoft は MSDTC がサポートされていないと述べています。
彼らの説明はあまり有益ではありません:
MS DTC トランザクションでデータベース ミラーリングを使用すると、同様のシナリオが発生する可能性があります。たとえば、新しいプリンシパル サーバーは、フェールオーバー後に MS DTC に接続します。ただし、MS DTC は新しいプリンシパル サーバーを認識しません。したがって、MS DTC は、トランザクションが他のデータベースでコミットされたと見なされる場合でも、"コミットの準備" フェーズにあるすべてのトランザクションを停止します。
私が理解に問題を抱えているのは、最後の文です。これは、DB サーバーがミラーリングされておらず、同じ時点で停止した場合とどう違うのでしょうか? 誰かが私にそれを説明できますか?これを組織内の他のユーザー (および顧客) に説明できるようにする必要がありますが、MSDTC が 1 つのシナリオで適切にロールバック/補正できる理由がわかりませんが、参加者の 1 つがミラーリングされた SQL サーバーである場合はできません。 (フルセーフティモード)。