DTCTester の使い方
2014/02/24 コメントをどうぞ
DTCTester は、MS-DTC を使い、SQL Server に対する分散トランザクションの動作を確認することができるツールです。
内部的には、ODBC データソースを使い、SQL Server データベースのトランザクション サポートを確認しています。
DTC の設定は問題ないのか、DTC が動いているか、等確認する際には、便利なツールなので紹介します。
なお、DTCTester は実際に SQL Server に接続して、一時テーブルを作成するので、SQL Server があることが前提です。
- DTCTester ダウンロード先
http://www.microsoft.com/en-us/download/details.aspx?id=30746
まず、上記をダウンロードして、どっか適当なフォルダーに展開しておく。
[ クライアント側の設定]
- MS-DTC の設定
- ODBC データソースの定義
- MS-DTC の設定
上記でクライアント側の MS-DTC の設定は完了です。
なお、MS-DTC は設定を変更したら、DTC サービスを再起動する必要があります。 - DTCTester は、DTC に対して ODBC データソースを使って SQL Server にアクセスするように指示します。
では、データソースを定義しておきます。なお、クライアント側が 64bit OS の場合には、
32bit の ODBC データソース(C:\Windows\SysWOW64\odbcad32.exe)で作成することを
忘れないようにしてください。(DTCTester が 32bit ツールのため)→
→
[ サーバー側(SQL Server)の設定]
- MS-DTC の設定
ここまでで必要な設定は終了です。
今回は SQL Server データベースにサンプルの Pubs データベースを使用しますので、
Pubs データベースに対して読み書き権限があるユーザーを準備しておくことも忘れないでください。
では、実際に動かしてみましょう。
上記実行を見ると、一時テーブルとして #dtc29760 を作成していることがわかります。
そして、トランザクションを投入して、コミット待ち状態で停止しています。(Enter キー押下でコミットされる)
では、現在のトランザクションの統計も確認してみます。
[ サーバー側(SQL Server)のトランザクション統計]
確かに、アクティブなトランザクションが 1 つあることがわかりました。
では、DTCTester に戻って、コミットするために、Enter を押下してみます。
無事にトランザクションがコミットされました。念のため、トランザクションの統計も確認してみます。
[ クライアント側のトランザクション統計]
[ サーバー側(SQL Server)のトランザクション統計]
MS-DTC の統計を見ても、コミットされたことが確認できました。
DTC トレースでも確認してみます。(tracefmt.exe でデコードが必要)
DTCTester は、なかなか便利なツールです。
クラスタ環境を構築したら、DTCTester で確認してみるというのも良いと思います。
あと、似たようなツールに DTCPing というものがあります。
- DTCPing ダウンロード先
http://www.microsoft.com/en-us/download/details.aspx?id=2868
こちらの DTCPing の方は、DTC が使用する RPC 通信がクライアント/サーバーで正常にできるかを
確認するだけのものになるので、利用用途はいまいちかなと。
DTCPing には、UI があり、クライアント側、サーバー側で動かす必要があります。
使用する際の注意点としては、サーバー側からも RPC のReverse Bind を行うので
クライアント側の RPC サービスに restrict の設定を行う(無効にする)必要があります。
- Troubleshooting MSDTC issues with the DTCPing tool
http://blogs.msdn.com/b/distributedservices/archive/2008/11/12/troubleshooting-msdtc-issues-with-the-dtcping-tool.aspx
個人的には、DTCTester の方が実用面で使えるツールかなと思います。