SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows Server 2008 以降のクラスターインスタンスの MSDTC のクラスターリソースについて

leave a comment

SQL Server のクラスターでは、MSDTC のクラスターリソースを作成していたことがあるかと思います。
# 使用する機能によっては作成しなくても問題はありませんが。

Windows Server 2003 にインストールする場合には、SQL Server のインストール前にクラスターのコアリソースに MSDTC のリソースを作成していたかと思います。

Windows Server 2008 以降は、MSDTC のクラスターリソースの作成は必須ではなくなったようです。
Understanding MS DTC Resources in Windows Server 2008 Failover Clusters
Microsoft 分散トランザクション コーディネーターのインストール
image

BOL によると Windows Server 2008 以降の DTC は以下のルールとなっているようです。

SQL Server によって選択される MSDTC のインスタンスは、次のいずれかのルールを満たすものです。

  • ローカル グループにインストールされた MSDTC を使用する。

  • MSDTC のマップされたインスタンスを使用する。

  • クラスターの既定の MSDTC インスタンスを使用する。

  • ローカル コンピューターのインストール済み MSDTC インスタンスを使用する。

Windows Server 2008 以降では、

  • SQL Server とは独立したグループに作成した DTC (独立した DTC)
    # SQL Server のインスタンスとは異なるノードで MSDTC のリソースが実行される可能性がある
  • SQL Server のグループ内に作成した DTC (専用 DTC)
    # SQL Server のインスタンスと同じノードで MSDTC のリソースが実行される
  • ローカルの DTC (既定のクラスター化 DTC が使用できない場合)

の 3 種類を使用できるようですね。

そのため、クラスターの MSDTC のリソースが無い状態で [BEGIN DISTRIBUTED TRAN] を実行するとエラーとならずに実行することができます。
image

コンポーネントサービスを確認するとローカル DTC で動作しているのが確認できますね。
image

2003 の場合はローカルの DTC に対応していないため、クラスター化された DTC のリソースが無いと以下のような警告が出力されています。
image

クラスターの DTC を作成しないで、分散トランザクションを実行するとエラーとなります。
image

2003 ではクラスターの DTC のリソースを作成しないで MSDTC のサービスを起動しようとしてもエラーとなってしまうので、クラスターリソースとして DTC を作成する必要がありました。クラスターリソースとして DTC が作成されていれば MSDTC のサービスを起動できますので、BEGIN DISTRIBUTED TRAN を実行できます。
image

私は分散トランザクションを使用したシステムに携わったことがないので、2008 以降でローカルの DTC とクラスターの DTC を使用した場合のパフォーマンスや運用の利便性についての実情が把握できていないのですが、2008 以降は DTC の考え方が変わってきているのを覚えておいた方が良さそうですね。

書籍では アドバンストMicrosoft SQL Server 2008構築・管理 に書かれていますので、分散トランザクションを使用されている方は一読されておいてもよいかもしれないです。

Written by masayuki.ozawa

6月 3rd, 2012 at 2:09 pm

Posted in MSCS/WSFC(MSFC),SQL Server

Tagged with , ,

Leave a Reply

*