多くの BizTalk Server ランタイム操作では、トランザクション上でランタイム操作の一貫性を維持するために、Microsoft 分散トランザクション コーディネーター (MSDTC) のサポートが必要です。MSDTC のトランザクション サポートを使用できないと、それに関連付けられた BizTalk Server ラインタイム操作を続行できません。MSDTC トランザクション サポートが正しく構成されていない場合に通常影響を受ける BizTalk のコンポーネントには、シングル サインオン サービス、BizTalk ホスト インスタンス、BizTalk Server によって接続されている SQL Server インスタンスなどがあります (これ以外にもあります)。このセクションでは、MSDTC に関連するエラーの情報と、MSDTC の問題の診断と解決に使用できる手順について説明します。
MSDTC トランザクション サポートが正しく構成されていない場合に発生する可能性があるエラー
BizTalk 環境のコンピューターで MSDTC トランザクション サポートが正しく構成されていない場合、BizTalk サーバーで次のようなエラーが発生する可能性があります。
- "A Microsoft Distributed Transaction Coordinator problem prevented connection to the Configuration database.The transaction manager has disabled its support for remote/network transactions."
- "A Microsoft Distributed Transaction Coordinator problem prevented connection to the Configuration database.The transaction has already been implicitly or explicitly committed or aborted."
- "Error Code: 0x8004d00a, New transaction cannot enlist in the specified transaction coordinator".
- "Could not retrieve transport type data for Receive Location 'MySample ReceiveLocation' from config store.Primary SSO Server 'MyServer' failed.The RPC server is unavailable."
- "Error Code: 0x8004d025, The partner transaction manager has disabled its support for remote/network transactions."
- "Error Code: 0xc0002a24, Could not import a DTC transaction.Please check that MSDTC is configured correctly for remote operation."
- "0x8004d01c
[0x1705] 内部作業項目の作成時にエラーが発生しました。
SQL Server が実行されているか確認してください。"
MSDTC の構成エラーを解決するには、次の手順を実行します。
BizTalk サーバーとリモート サーバーの間で NetBIOS 名前解決が正常に行われたことの確認
コンピューター間で MSDTC トランザクションが正常に実行されるには、クライアント コンピューターでサーバー コンピューターの NetBIOS 名を適切な IP アドレスに解決でき、サーバー コンピューターでクライアント コンピューターの NetBIOS 名を適切な IP アドレスに解決できる必要があります。NetBIOS 名前解決が両方向 (クライアントからサーバー、およびサーバーからクライアント) で機能していることを確認するには、次の手順を実行します。
注 |
|---|
|
NetBIOS 名は、一般に、ネットワーク名とも呼ばれます。 |
- 各コンピューターの NetBIOS 名を特定します。
- [マイ コンピューター] を右クリックし、[プロパティ] をクリックして [システムのプロパティ] ダイアログ ボックスを表示します。次に、[コンピューター名] タブをクリックし、コンピューターに割り当てられたフル コンピューター名を表示します。
- NetBIOS 名は、フル コンピューター名として表示される名前の最初の部分です。たとえば、フル コンピューター名が myserver.company.domain.com の場合、コンピューターの NetBIOS 名は myserver です。
- 次のようにして、IP アドレスまたは各コンピューターに関連付けられたアドレスを特定します。
- クライアント コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
-
IP アドレスまたはコンピューターに関連付けられたアドレスがコマンド プロンプト ウィンドウに表示されます。
-
サーバー コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
-
IP アドレスまたはサーバー コンピューターに関連付けられたアドレスがコマンド プロンプト ウィンドウに表示されます。
-
各コンピューターの NetBIOS 名がコンピューターに関連付けられている IP アドレスの 1 つに解決されることを確認します。
- クライアント コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
ping <NetBIOS name of server computer>
ping コマンドの結果として、サーバー コンピューターに関連付けられた IP アドレスが返されます。
- サーバー コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
ping <NetBIOS name of client computer>
ping コマンドの結果として、クライアント コンピューターに関連付けられた IP アドレスが返されます。
- 各コンピューターの NetBIOS 名に関連付けられている IP アドレスの逆引き名前参照が正しいコンピューター名に解決されることを確認します。
- クライアント コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
ping -a <IP Address associated with client computer NetBIOS name>
ping コマンドの結果として、NetBIOS 名または手順 3a. で使用した NetBIOS 名に対応する完全修飾ドメイン名が返されます。返された名前が手順 3a. で使用した NetBIOS 名に一致しないか対応しない場合は、IP アドレスの逆引き参照は失敗し、その結果、MSDTC トランザクションがエラーになります。
- サーバー コンピューターでコマンド プロンプトを起動して次のコマンドを入力し、Enter キーを押します。
ping -a <IP Address associated with server computer NetBIOS name>
ping コマンドの結果として、NetBIOS 名または手順 3b. で使用した NetBIOS 名に対応する完全修飾ドメイン名が返されます。返された名前が手順 3b. で使用した NetBIOS 名に一致しないか対応しない場合は、IP アドレスの逆引き参照は失敗し、その結果、MSDTC トランザクションがエラーになります。
NetBIOS 名前解決がいずれかの方向で失敗するか、逆引き名前参照が失敗する場合、DNS サーバー、NetBIOS ネーム サーバー、HOSTS ファイル、または LMHOSTS ファイルに適切なエントリを作成して問題を解決します。
注 |
|---|
| コンピューターで使用される名前解決の方法は、コンピューターの NetBIOS ノードの型によって異なります。NetBIOS ノードの型の詳細については、「Introduction to TCP/IP」の「NetBIOS Name Resolution」を参照してください。 |
BizTalk Server とリモート サーバー間のファイアウォールによって、RPC 動的ポート割り当てに必要なポートがブロックされていないことを確認する
ネットワーク経由の MSDTC 機能は、ネットワーク経由の RPC 機能に依存します。ファイアウォールを介して RPC 機能を使用するには、RPC 動的ポート割り当てに対応できるよう特定のポートを開いておく必要があります。BizTalk サーバーとリモート サーバーの間にファイアウォールが配置されている場合、RPC 動的ポート割り当てに対応するには、「ファイアウォールで動作するように RPC の動的ポート割り当てを構成する方法」に記載されている手順を実行します。
Windows Server 2003 SP1、Windows XP SP2、Windows Server 2008、および Windows Vista での適切な MSDTC セキュリティ構成オプションの設定
Windows Server 2003 SP1、Windows XP SP2、Windows Server 2008、および Windows Vista には、ネットワークを経由した MSDTC へのアクセスを管理するセキュリティ強化機能が用意されています。MSDTC のセキュリティ設定を変更することにより、MSDTC とリモート コンピューター間のネットワーク経由の通信を制御できます。次の表に、MSDTC セキュリティ設定の構成時に使用できるオプションの推奨値を示します。
|
構成オプション |
既定値 |
推奨値
|
|---|
|
ネットワーク DTC アクセス |
無効 |
有効 |
|
クライアントおよび管理 |
|
|
|
リモート クライアントを許可する |
無効 |
無効 |
|
リモート管理を許可する |
無効 |
無効 |
|
トランザクション マネージャー通信 |
|
|
|
受信を許可する |
無効 |
有効 |
|
送信を許可する |
無効 |
有効 |
相互認証を必要とする | 有効 | すべてのリモート コンピューターで Windows Server 2003 SP1 または Windows XP SP2、あるいはそれ以降が実行されており、"相互認証を必要とする" を指定して構成されている場合は、有効 |
着信呼び出し側には認証を必要とする | 無効 | クラスター上で MSDTC を実行している場合は、有効 |
認証を必要としない | 無効 |
リモート コンピューターで Windows Server 2003 SP1 または XP SP2 より前の OS を実行している場合は、有効 |
トランザクション インターネット プロトコル (TIP) を有効にする | 無効 | BAM ポータルを実行している場合は、有効 |
XA トランザクションを有効にする | 無効 |
MQSeries アダプターを使用して IBM WebSphere MQ と通信する場合など、XA ベースのトランザクション システムと通信する場合は、有効
|
これらの変更を適用した後で、MSDTC サービスが再起動されます。
MSDTC セキュリティ構成オプションにアクセスするには、次の手順を実行します。
Windows Server 2003 SP1 および Windows XP SP2 の場合
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。次に、「dcomcnfg」と入力して [コンポーネント サービス] 管理コンソールを起動します。
- [コンポーネント サービス]、[コンピューター] の順にクリックして展開します。
- [マイ コンピューター] を右クリックし、[プロパティ] をクリックします。
- [マイ コンピューターのプロパティ] ダイアログ ボックスで [MSDTC] タブをクリックし、[セキュリティの構成] をクリックして [セキュリティの構成] ダイアログ ボックスを表示します。
Windows Server 2008 および Windows Vista の場合
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。次に、「dcomcnfg」と入力して [コンポーネント サービス] 管理コンソールを起動します。
- [コンポーネント サービス]、[コンピューター] の順にクリックして展開します。
- [マイ コンピューター]、[分散トランザクション コーディネーター] の順にクリックして展開し、[ローカル DTC] を右クリックして、[プロパティ] をクリックします。
- [ローカル DTC のプロパティ] ダイアログの [セキュリティ] タブをクリックします。
注 |
|---|
| 変更内容によっては、変更を反映するためにコンピューターの再起動が必要となる場合があります。変更を適用して MSDTC サービスを再起動しても問題が解消しない場合は、変更を行ったコンピューターを再起動して、確実に変更が有効になるようにします。 |
[相互認証を必要とする] または [着信呼び出し側には認証を必要とする] 構成オプションが有効な場合、クライアント コンピューターのアカウントには ”ネットワーク経由でコンピューターへアクセス” ユーザー権限を付与する必要があります。クライアント コンピューターのアカウントに ”ネットワーク経由でコンピューターへアクセス” ユーザー権限が付与されていない場合、または ”ネットワーク経由でコンピューターへアクセスを拒否する” ユーザー権限に含まれている場合は、クライアント コンピューターとサーバー コンピューター間の DTC 通信はエラーになります。
既定の設定では、Everyone グループに ”ネットワーク経由でコンピューターへアクセス” ユーザー権限が付与されています。したがって、既定の設定が変更されていない限り、このユーザー権限を変更する必要はありません。[認証を必要としない] 構成オプションが有効な場合、クライアント コンピューターのアカウントに ”ネットワーク経由でコンピューターへアクセス” ユーザー権限を付与する必要はありません。
"ネットワーク経由でコンピューターへアクセス" ユーザー権限を付与されるユーザーまたはグループを変更するには、次の手順を実行します。
-
[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして「Gpedit.msc」と入力します。次に [OK] をクリックします。
-
ローカル コンピューターのポリシー一覧で次の項目を展開します。
-
コンピューターの構成
-
Windows の設定
-
セキュリティの設定
-
ローカル ポリシー
-
[ユーザー権限の割り当て] をクリックします。
-
[ネットワーク経由でコンピューターへアクセス] をダブルクリックし、[ユーザーまたはグループの追加] をクリックします。
-
[オブジェクトの種類] をクリックし、[コンピューター] を選択して、[OK] をクリックします。
-
[選択するオブジェクト名を入力してください] 領域にコンピューター名またはグループ名を追加します。
-
[名前の確認] をクリックして入力した名前を確認します。
-
[OK] を 2 回クリックします。
”ネットワーク経由でコンピューターへアクセスを拒否する” ユーザー権限に含まれるユーザーまたはグループを変更するには、次の手順を実行します。
-
ローカル コンピューターのポリシー一覧で次の項目を展開します。
-
コンピューターの構成
-
Windows の設定
-
セキュリティの設定
-
ローカル ポリシー
-
[ユーザー権限の割り当て] をクリックします。
-
[ネットワーク経由でコンピューターへアクセスを拒否する] をダブルクリックし、このユーザー権限から削除するコンピューター名またはグループをクリックして選択します。
-
[削除] をクリックし、[OK] をクリックします。
Windows Server 2003 SP1 および Windows XP SP2 の分散トランザクション コーディネーター サービスの新機能の詳細については、「Windows Server 2003 Service Pack 1 および Windows XP Service Pack 2 の分散トランザクション コーディネーター サービスの新機能」を参照してください。
Windows XP SP2 の EnableAuthEpResolution オプションおよび RestrictRemoteClients オプションに適切な値を設定する
Windows XP SP2 ではセキュリティが強化されており、RPC インターフェイスへは必ず認証された呼び出しを行う必要があります。この機能は、EnableAuthEpResolution レジストリ キーおよび RestrictRemoteClients レジストリ キーを使用して構成できます。リモート コンピューターから Windows XP SP2 コンピューターの RPC インターフェイスにアクセスできるようにするには、次の手順を実行します。
警告 |
|---|
|
レジストリ エディターの使用方法を誤ると、問題が発生し、オペレーティング システムの再インストールが必要になる場合があります。問題が発生する可能性のあることを十分に認識したうえで使用してください。レジストリをバックアップ、復元、および変更する方法の詳細については、サポート技術情報の資料「Microsoft Windows レジストリの説明」を参照してください。
|
-
[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。次に、「regedit.exe」と入力し、[OK] をクリックしてレジストリ エディターを起動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT に移動します。
-
RPC キーの下に、次の値で DWORD エントリを作成します。RPC キーが存在しない場合は、新しく作成する必要があります。
|
DWORD エントリ
|
既定値
|
推奨値
|
|---|
|
EnableAuthEpResolution
|
0 (無効)
|
1
|
|
RestrictRemoteClients |
1 (有効) |
0
|
-
レジストリ エディターを閉じます。
-
MSDTC サービスを再起動します。
注 |
|---|
|
変更内容によっては、変更を反映するためにコンピューターの再起動が必要となる場合があります。変更を適用して MSDTC サービスを再起動しても問題が解消しない場合は、変更を行ったコンピューターを再起動して、確実に変更が有効になるようにします。 |
Windows XP SP2 の RPC インターフェイス制限機能の詳細については、「"Windows XP Service Pack 2 セキュリティ強化機能搭載" での機能の変更点」の「RPC インターフェイスの制限」を参照してください。
Windows ファイアウォールが稼働中の場合、MSDTC サービスの例外を追加
Windows ファイアウォール サービスが、コンピューター間の MSDTC 通信をブロックする場合があります。Windows ファイアウォールが稼働している場合にコンピューター間で MSDTC 通信がブロックされないようにするには、Windows ファイアウォールの例外リストに msdtc.exe を追加します。
Windows Server 2003 SP1 および Windows XP の場合
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、「firewall.cpl」と入力し [OK] をクリックすると、[Windows ファイアウォール] ダイアログ ボックスが開きます。
- [Windows ファイアウォール] ダイアログ ボックスの [例外] タブをクリックします。
- [プログラムの追加] をクリックして [プログラムの追加] ダイアログ ボックスを表示します。
- [参照] をクリックして、%system32%\msdtc.exe に移動します。
注 |
|---|
| コマンド プロンプトを起動し、「echo %system32%」と入力して Enter キーを押し、このコンピューター上の \System32 ディレクトリの場所を指定します。 |
- msdtc.exe をクリックして選択し、[開く] をクリックします。
- [スコープの変更] をクリックして、MSDTC 通信を許可する一連のコンピューターを指定し、[OK] をクリックします。
- [プログラムの追加] ダイアログ ボックスで [OK] をクリックし、[Windows ファイアウォール] ダイアログ ボックスで [OK] をクリックします。
- 分散トランザクション コーディネーター サービスを停止して再起動します。
- コマンド プロンプトを起動して「net stop msdtc」と入力し、Enter キーを押します。
- 分散トランザクション コーディネーター サービスが停止した後、「net start msdtc」と入力して Enter キーを押します。
Windows Server 2008 および Windows Vista の場合
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、「firewall.cpl」と入力し [OK] をクリックすると、[Windows ファイアウォール] ダイアログ ボックスが開きます。
- [Windows ファイアウォールによるプログラムの許可] をクリックして、[Windows ファイアウォールの設定] ダイアログ ボックスを表示します。
- [Windows ファイアウォールの設定] ダイアログ ボックスの [例外] タブをクリックします。
- [プログラムの追加] をクリックして [プログラムの追加] ダイアログ ボックスを表示します。
- [参照] をクリックして、%system32%\msdtc.exe に移動します。
注 |
|---|
| コマンド プロンプトを起動し、「echo %system32%」と入力して Enter キーを押し、このコンピューター上の \System32 ディレクトリの場所を指定します。 |
- msdtc.exe をクリックして選択し、[開く] をクリックします。
- [スコープの変更] をクリックして、MSDTC 通信を許可する一連のコンピューターを指定し、[OK] をクリックします。
- [プログラムの追加] ダイアログ ボックスで [OK] をクリックし、[Windows ファイアウォールの設定] ダイアログ ボックスで [OK] をクリックします。
- [Windows ファイアウォール] ダイアログ ボックスを閉じます。
- 分散トランザクション コーディネーター サービスを停止して再起動します。
- コマンド プロンプトを起動して「net stop msdtc」と入力し、Enter キーを押します。
- 分散トランザクション コーディネーター サービスが停止した後、「net start msdtc」と入力して Enter キーを押します。
DTCTester または DTCPing を使用してネットワーク経由で MSDTC 機能を確認する
2 台のコンピューターのうちの 1 台に SQL Server がインストールされている場合は、DTCTester ユーティリティを使用してそれらのコンピューター間のトランザクション サポートを確認します。DTCTester ユーティリティでは、ODBC を使用して SQL Server データベースのトランザクション サポートを確認します。DTCTester の詳細については、「DTCTester ツールの使用方法」を参照してください。
2 台のコンピューターのどちらにも SQL Server がインストールされていない場合は、DTCPing を使用してそれらのコンピューター間のトランザクション サポートを確認します。DTCPing ツールは、クライアント コンピューターとサーバー コンピューターの両方で実行する必要があります。また、このツールは、どちらのコンピューターにも SQL Server がインストールされていない場合に DTCTester ユーティリティの代わりに使用できます。DTCPing の詳細については、「MS DTC ファイアウォールの問題をトラブルシューティングする方法」を参照してください。
オペレーティング システムに一意なセキュリティ識別子 (SID) が割り当てられていることを確認する
Windows オペレーティング システムを実行するコンピューターでは、セキュリティ識別子 (SID) を使用してコンピューターを識別します。MSDTC 機能を使用する場合、ホスト オペレーティング システムに一意な SID が割り当てられている必要があります。Windows のインストールを複製したディスク イメージは、システム準備ツール (Sysprep) を使用して構成する必要があります。そうしないと、配置したオペレーティング システムの SID が重複したり、MSDTC の機能性が低下することがあります。この状況は、仮想ハード ディスクを使用して仮想マシンにオペレーティング システムを配置した場合に発生します。
仮想ハード ディスクをコピーおよび配布することによって Windows を配置する場合は、Sysprep を使用して、配置の準備が完了した Windows が含まれている仮想ハード ディスクを使用する必要があります。Sysprep の実行に関する詳細については、「Ways to deploy an operating system to a virtual machine」の「Using virtual hard disks」を参照してください。
winspool.drv の更新版のインストール (Windows Server 2003 x64 Edition に BizTalk Server がインストールされている場合)
winspool.drv ファイルに問題があると、Windows Server 2003 x64 Edition ベースのコンピューター上で MSDTC サービスを初期化できません。詳細については、「You may receive error messages when you run a 32-bit program on a 64-bit Windows Server 2003-based computer」を参照してください。
"New transaction cannot enlist in the specified transaction coordinator (0x8004d00a)" というエラーの発生 (クライアント コンピューターとサーバー コンピューターの間の MSDTC 接続が閉じられた場合)
場合によっては、クライアントとサーバーの間の既存の MSDTC 接続が閉じられ、以後、この接続の使用を試みるたびに次のエラー メッセージが表示されることがあります。
New transaction cannot enlist in the specified transaction coordinator (0x8004d00a)
詳細については、「Error message when you try to start a transaction in MS DTC: "New transaction cannot enlist in the specified transaction coordinator"」を参照してください。
概念
トラブルシューティングで使用するツールとユーティリティ
Windows Server クラスターのトラブルシューティング