MSDTCのクラスタ化

こんにちは。
ヒゲダルマです。

先日、タイトルの件について人に相談されたので、ついでにまとめておきます。

SQL Serverのフェールオーバークラスタを構成する際はMSDTC(Microsoft 分散トランザクション コーディネーター)もクラスタリソースとして合わせて構成するケースが殆どかと思います。

確かに、Windows Server 2003まではMSDTCをクラスタリソースとして構成することが仕様上必須でした。

しかし、Windows Server 2008 + SQL Server 2005以降でフェールオーバークラスタを構成する場合にはMSDTCをクラスタリソースとして構成することは仕様上必須ではなくなっています。(ローカルMSDTCは必要ですが、クラスタ化しなくてもOKです。)

にも関わらず、今(Windows Server 2012+SQL Server 2014とか)でもMSDTCを当たり前のようにクラスタリソースとして構成するのは何故でしょう。習慣(?)それも一部ありそうですが。。。

MSDTCをクラスタリソース化しておく正しい理由は、トランザクション中にSQL Serverがフェールオーバーした際のMSDTCの処理/動作にあります。
MSDTCをクラスタリソース化した場合トランザクションはRollbackされますが、ローカルMSDTCの場合トランザクションはAbortされます。

つまり、トランザクションが適切に処理されることを望むなら、MSDTCはクラスタリソース化しておくべき、ということです。

より詳細については、こちらをご覧下さい。

以上、駄文散文ではございましたが、ご拝読ありがとうございました。

Pocket
このエントリーをはてなブックマークに追加

コメントを書く

名前
必須