次の方法で共有


MSDTC に関する問題のトラブルシューティング

ほとんどの BizTalk Server ランタイム操作では、操作のトランザクション整合性を確保するために、Microsoft 分散トランザクション コーディネーター (MSDTC) のサポートが必要です。 MSDTC トランザクションのサポートが利用できない場合は、関連付けられている BizTalk Server ランタイム操作を続行できません。 MSDTC トランザクションのサポートが正しく構成されていない場合に一般的に影響を受ける BizTalk のコンポーネントには、単一 Sign-On サービス、BizTalk ホスト インスタンス、および BizTalk Server によって接続されているすべての SQL Server インスタンスが含まれます (ただし、これらに限定されません)。 このセクションには、MSDTC に関連するエラーと、MSDTC に関する問題の診断と解決に従うことができる手順について説明する情報が含まれています。

MSDTC トランザクションのサポートが正しく構成されていない場合に発生する可能性があるエラー

BizTalk 環境のコンピューターで MSDTC トランザクションのサポートが正しく構成されていない場合、BizTalk Server で次のようなエラーが発生する可能性があります。

  • "Microsoft 分散トランザクション コーディネーターの問題により、構成データベースに接続できませんでした。 トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。

  • "Microsoft 分散トランザクション コーディネーターの問題により、構成データベースに接続できませんでした。 トランザクションは既に暗黙的または明示的にコミットまたは中止されています。"

  • "エラー コード: 0x8004d00a、新しいトランザクションは指定されたトランザクション コーディネーターに参加できません"。

  • "構成ストアから受信場所 'MySample ReceiveLocation' のトランスポート型データを取得できませんでした。 プライマリ SSO サーバー 'MyServer' に失敗しました。 RPC サーバーは使用できません"。

  • "エラー コード: 0x8004d025、パートナー トランザクション マネージャーがリモート/ネットワーク トランザクションのサポートを無効にしました"。

  • "エラー コード: 0xc0002a24、DTC トランザクションをインポートできませんでした。 MSDTC がリモート操作用に正しく構成されていることを確認してください。

  • "0x8004d01c

    [0x1705] 内部作業項目の作成に失敗しました。

    SQL Server が実行されていることを確認します。

    MSDTC 構成エラーを解決するには、次の手順に従います。

BizTalk Server とリモート サーバー間の NetBIOS 名前解決が成功したことを確認する

コンピューター間で MSDTC トランザクションが成功した場合、クライアント コンピューターはサーバー コンピューターの NetBIOS 名を正しい IP アドレスに解決でき、サーバー コンピューターはクライアント コンピューターの NetBIOS 名を正しい IP アドレスに解決できる必要があります。 NetBIOS の名前解決が両方向 (クライアントからサーバー、サーバーからクライアント) で動作することを確認するには、次の手順に従います。

NetBIOS 名は、一般に ネットワーク 名とも呼ばれます。

  1. 各コンピューターの NetBIOS 名を確認します。

    1. [ マイ コンピューター ] を右クリックして [ システムのプロパティ ] ダイアログを表示し、[ コンピューター名 ] タブをクリックして、コンピューターに割り当てられている 完全なコンピューター名 を表示します。

    2. NetBIOS 名は 、完全なコンピューター名 として指定された名前の最初の部分です。たとえば、 完全なコンピューター名 が myserver.company.___domain.com として表示されている場合、コンピューターの NetBIOS 名は myserver です

  2. 各コンピューターに関連付けられている IP アドレスを決定します。

    1. クライアント コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ipconfig /all
      
    2. クライアント コンピューターに関連付けられている IP アドレスがコマンド プロンプト ウィンドウに表示されます。

    3. サーバー コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ipconfig /all
      
    4. サーバー コンピューターに関連付けられている IP アドレスがコマンド プロンプト ウィンドウに表示されます。

  3. 各コンピューターの NetBIOS 名が、コンピューターに関連付けられているいずれかの IP アドレスに解決されていることを確認します。

    1. クライアント コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ping <NetBIOS name of server computer>
      

      ping コマンドの結果は、サーバー コンピューターに関連付けられている IP アドレスを返す必要があります。

    2. サーバー コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ping <NetBIOS name of client computer>
      

      ping コマンドの結果は、クライアント コンピューターに関連付けられている IP アドレスを返す必要があります。

  4. 各コンピューターの NetBIOS 名に関連付けられている IP アドレスの逆引き名検索が正しいコンピューター名に解決されることを確認します。

    1. クライアント コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ping -a <IP Address associated with client computer NetBIOS name>
      

      ping コマンドの結果は、手順 3a で使用した NetBIOS 名に対応する NetBIOS 名または完全修飾ドメイン名を返す必要があります。 返された名前が手順 3a で使用されている NetBIOS 名と一致しないか、または対応していない場合、IP アドレスの逆引き参照が失敗し、MSDTC トランザクションが失敗する可能性があります。

    2. サーバー コンピューターでコマンド プロンプトを起動し、次のコマンドを入力し、Enter キーを押します。

      ping -a <IP Address associated with server computer NetBIOS name>
      

      ping コマンドの結果は、手順 3b で使用した NetBIOS 名に対応する NetBIOS 名または完全修飾ドメイン名を返す必要があります。 返された名前が手順 3b で使用されている NetBIOS 名と一致しないか、または対応していない場合、IP アドレスの逆引き参照が失敗し、MSDTC トランザクションが失敗する可能性があります。

    NetBIOS の名前解決がいずれの方向でも成功しない場合、または逆引き名の参照が失敗した場合は、DNS サーバー、NetBIOS ネーム サーバー、HOSTS ファイル、または LMHOSTS ファイルに適切なエントリを作成して問題を解決します。

コンピューターで使用される名前解決の方法は、コンピューターの NetBIOS ノードの種類によって異なります。 NetBIOS ノードの種類の詳細については、「 NetBIOS 名前解決」を参照してください。

BizTalk Server とリモート サーバー間のファイアウォールが、RPC 動的ポート割り当てに必要なポートをブロックしないようにする

ネットワーク経由の MSDTC 機能は、ネットワーク上の RPC 機能に依存します。 ファイアウォールを介した RPC 機能では、RPC 動的ポートの割り当てに対応するために、特定のポートが開かれている必要があります。 BizTalk Server とリモート サーバーの間にファイアウォールが配置されている場合は、「 RPC 動的ポートの割り当てを構成して、RPC 動的ポートの割り当てに対応するようにファイアウォールで動作するように RPC 動的 ポート割り当てを構成する方法」の手順に従います。

適切な MSDTC セキュリティ構成オプションを設定する

Windows には、ネットワーク経由での MSDTC へのアクセス方法を制御するセキュリティの強化が用意されています。 MSDTC セキュリティ設定を変更することで、MSDTC がネットワーク経由でリモート コンピューターと通信する方法を制御できます。 次の表に、MSDTC セキュリティ設定を構成するときに使用できるオプションの推奨値を示します。

構成オプション デフォルト値 推奨値
ネットワーク DTC アクセス 障害者 有効化済み
クライアントと管理
リモート クライアントを許可する 障害者 障害者
リモート管理を許可する 障害者 障害者
Transaction Manager の通信
受信を許可する 障害者 有効化済み
アウトバウンドを許可 障害者 有効化済み
相互認証が必要 有効化済み すべてのリモート マシンが Windows Server 2003 SP1 または Windows XP SP2 以降を実行しており、"相互認証が必要" で構成されている場合に有効になります。
着信呼び出し元認証が必要 障害者 クラスターで MSDTC を実行している場合に有効になります。
認証は必要ありません 障害者 リモート マシンが Windows Server 2003 SP1 より前または Windows XP SP2 より前の場合に有効になります。
TIP を有効にする 障害者 BAM ポータルを実行している場合に有効になります。
XA トランザクションを有効にする 障害者 MQSeries アダプターを使用して WebSphere MQ と通信する場合など、XA ベースのトランザクション・システムと通信する場合に有効になります。

これらの変更を適用すると、MSDTC サービスが再起動されます。

MSDTC セキュリティ構成オプションにアクセスするには、次の手順に従います。

  1. [ スタート] をクリックし、[ 実行] をクリックし、「 dcomcnfg 」と入力して 、Component Services管理コンソールを起動します。

  2. [コンポーネント サービス]をクリックして展開し、[コンピューター]をクリックして展開します。

  3. [ マイ コンピューター] をクリックして展開し、[ 分散トランザクション コーディネーター] をクリックし、[ ローカル DTC] を右クリックして、[ プロパティ] をクリックします。

  4. [ローカル DTC プロパティ] ダイアログの [セキュリティ] タブをクリックします。

行われた変更によっては、変更を適用するためにコンピューターの再起動が必要になる場合があります。 変更を適用して MSDTC サービスを再起動しても問題が解決されない場合は、変更が行われたコンピューターを再起動して、変更を確実に有効にします。

[相互認証が必要] または [着信呼び出し元認証が必要] 構成オプションが有効になっている場合は、クライアントのコンピューター アカウントにネットワーク ユーザー権限からこのコンピューターへのアクセス権を付与する必要があります。 クライアント コンピューターのコンピューター アカウントにネットワーク ユーザー権限 からこのコンピューターへのアクセス 権が付与されていない場合、またはネットワーク ユーザー権限 からこのコンピューターへのアクセスを拒否する権限に 含まれている場合、クライアントとサーバー コンピューター間の DTC 通信は失敗します。

既定の設定では、[すべてのユーザー] グループに ネットワーク ユーザー権限からこのコンピューターへのアクセスを 許可します。 そのため、既定の設定が変更されていない限り、このユーザー権限を変更する必要はありません。 [ 認証が必要ありません ] 構成オプションが有効になっている場合、[ネットワーク ユーザー権限 からこのコンピューターにアクセス する] は、クライアントのコンピューター アカウントには適用されません。

"ネットワークからこのコンピューターにアクセスする" ユーザー権限が付与されているユーザーまたはグループを変更するには、次の手順に従います。

  1. [ スタート] をクリックし、[ 実行] をクリックし、「 Gpedit.msc」と入力して、[ OK] をクリックします。

  2. ローカル コンピューター ポリシーの一覧で次の項目を展開します。

    • [コンピューターの構成]

    • Windows の設定

    • セキュリティ設定

    • ローカル ポリシー

  3. [ユーザー権利の割り当て] をクリックします。

  4. [ネットワークからこのコンピューターにアクセスする] をダブルクリックし、[ユーザーまたはグループの追加] をクリックします。

  5. [ オブジェクトの種類] をクリックし、[ コンピューター ] を選択し、[ OK] をクリックします。

  6. [選択するオブジェクト名を入力してください] 領域に、コンピューター名またはグループ 名を 追加します。

  7. [ 名前の確認] をクリックしてエントリを確認します。

  8. [OK] を 2 回クリックします。

    ネットワーク ユーザー権限 からこのコンピューターへのアクセスを拒否する権限に 含まれるユーザーまたはグループを変更するには、次の手順に従います。

  9. ローカル コンピューター ポリシーの一覧で次の項目を展開します。

    • [コンピューターの構成]

    • Windows の設定

    • セキュリティ設定

    • ローカル ポリシー

  10. [ユーザー権利の割り当て] をクリックします。

  11. [ネットワークからこのコンピューターへのアクセスを拒否する] をダブルクリックし、このユーザーから削除するコンピューター名またはグループを右クリックして選択します。

  12. [ 削除 ] をクリックし、[ OK] をクリックします。

EnableAuthEpResolution オプションと RestrictRemoteClients オプションに適切な値を設定する

Windows では、RPC インターフェイスに対して認証済みの呼び出しを要求することで、セキュリティが強化されます。 この機能は、 EnableAuthEpResolution および RestrictRemoteClients レジストリ キーを使用して構成できます。 リモート コンピューターが RPC インターフェイスにアクセスできるようにするには、次の手順に従います。

Warnung

レジストリ エディターを誤って使用すると、オペレーティング システムを再インストールする必要がある問題が発生する可能性があります。 リスクを理解した上でレジストリ エディターを使用してください。 レジストリのバックアップ、復元、変更の方法の詳細については、Microsoft サポート技術情報の「Microsoft Windows レジストリの説明」の「Microsoft Windows レジストリ の説明」を参照してください。

  1. [ スタート] をクリックし、[ 実行] をクリックし、「 regedit.exe」と入力し、[ OK] をクリックしてレジストリ エディターを起動します。

    HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT に移動します

  2. RPC キーの下に、指定された値を含む次の DWORD エントリを作成します。 RPC キーが存在しない場合は、作成する必要があります。

    DWORD エントリ 既定値 推奨値
    有効化認証エンドポイント解決 (EnableAuthEpResolution) 0 (無効) 1
    リモートクライアントの制限 1 (有効) 0
  3. レジストリ エディターを閉じます。

  4. MSDTC サービスを再起動します。

行われた変更によっては、変更を適用するためにコンピューターの再起動が必要になる場合があります。 変更を適用して MSDTC サービスを再起動しても問題が解決されない場合は、変更が行われたコンピューターを再起動して、変更を確実に有効にします。

Windows ファイアウォールが実行されている場合は、MSDTC サービスの例外を追加します

Windows ファイアウォール サービスは、コンピューター間の MSDTC 通信をブロックする場合があります。 コンピューター間で MSDTC 通信がブロックされないようにするには、Windows ファイアウォール サービスが実行されている場合は、windows ファイアウォールの例外リストに msdtc.exe を追加します。

  1. [ スタート] をクリックし、[ 実行] をクリックし、「 firewall.cpl」と入力し、[ OK] をクリックして [Windows ファイアウォール ] ダイアログ ボックスを表示します。

  2. [Windows ファイアウォール経由のプログラムによる Windows ファイアウォールの設定] ダイアログ ボックスの表示を許可する] をクリックします。

  3. [Windows ファイアウォールの設定] ダイアログ ボックスの [例外] タブをクリックします。

  4. [ プログラムの追加] をクリックして、[ プログラムの追加 ] ダイアログ ボックスを表示します。

  5. [ 参照 ] をクリックし、 %system32%\msdtc.exe に移動します。

    コマンド プロンプトを起動し、「 echo %system32% 」と入力し、 Enter キー を押して、このコンピューター上の \System32 ディレクトリの場所を確認します。

  6. クリックして msdtc.exe を選択し、[ 開く] をクリックします。

  7. [ スコープの変更 ] をクリックして、MSDTC 通信を許可する必要があるコンピューターのセットを指定し、[OK] をクリック します

  8. [プログラムの追加] ダイアログ ボックスで [OK] をクリックし、[Windows ファイアウォールの設定] ダイアログ ボックスで [OK] をクリックします。

  9. [Windows ファイアウォール] ダイアログ ボックスを閉じます。

  10. 分散トランザクション コーディネーター サービスを停止して再起動します。

    • コマンド プロンプトを起動し、「 net stop msdtc 」と入力して Enter キーを押します。

    • 分散トランザクション コーディネーター サービスが停止したら、「 net start msdtc 」と入力し、 Enter キーを押します。

DTCTester または DTCPing を使用してネットワーク経由で MSDTC 機能を確認する

sql Server がいずれかのコンピューターにインストールされている場合は、Test-Dtc コマンドレットを使用して 2 台のコンピューター間のトランザクション サポートを確認します。 詳細については、「 Windows PowerShell: Test-Dtc」を参照してください。

どちらのコンピューターにも SQL Server がインストールされていない場合は、DTCPing を使用して 2 台のコンピューター間のトランザクション サポートを確認します。 DTCPing ツールは、クライアント コンピューターとサーバー コンピューターの両方で実行する必要があり、どちらのコンピューターにも SQL Server がインストールされていない場合の DTCTester ユーティリティの代わりに適しています。 DTCPing の詳細については、「 MS DTC ファイアウォールの問題のトラブルシューティング方法 」および「ファイアウォール経由で 動作するように Microsoft 分散トランザクション コーディネーター (DTC) を構成する」を参照してください。

Von Bedeutung

DTCPing が "WARNING:両方のテスト マシンの CID 値が同じ" という警告を返す場合は、「MSDTC にテスト マシン間の適切な MSDTC 機能に対応するために 一意の CID 値が割り当てられていることを確認 する」セクションの手順に従います。

MSDTC に一意の CID 値が割り当てられていることを確認する

Windows オペレーティング システムの MSDTC 機能では、コンピューター間の MSDTC 機能が正しく動作するように、一意の CID 値が必要です。 Windows インストールのディスク重複イメージは、一意の CID 値を持っている必要があります。または MSDTC 機能が損なわれる可能性があります。 これは、仮想ハード ディスクを使用してオペレーティング システムを仮想マシンにデプロイするときに発生する可能性があります。

Windows オペレーティング システムを実行しているコンピューターの MSDTC CID 値が一意かどうかを確認するには、両方のコンピューターの HKEY_CLASSES_ROOT\CID レジストリ キーの下にあるエントリの値を確認します。 これらの値がコンピューターごとに一意でない場合は、「 分散トランザクション コーディネーター サービスの再インストールを検討してください 」セクションの手順に従って、他のトラブルシューティング手順でいずれかのコンピューターに MSDTC を再インストールできない場合は、そのコンピューターに固有の MSDTC CID 値が生成され、適切な MSDTC 操作に対応します。

クライアント コンピューターとサーバー コンピューターの間の MSDTC 接続が閉じている場合、"指定したトランザクション コーディネーターに新しいトランザクションを参加できません (0x8004d00a)" というエラーが発生する

特定のシナリオでは、クライアントとサーバー間の既存の MSDTC 接続が閉じられ、その後、この接続を使用しようとすると、次のエラー メッセージが表示される可能性があります。新しいトランザクションは、指定されたトランザクション コーディネーターに参加できません (0x8004d00a) 詳細については、「 新しいトランザクションは、MS DTC でトランザクションを開始しようとしたときに、指定されたトランザクション コーディネーターに参加できません」に移動します。

他のトラブルシューティング手順が成功しない場合は、分散トランザクション コーディネーター サービスの再インストールを検討してください

MSDTC に関する問題のトラブルシューティングで他の試行が成功しない場合は、MSDTC のアンインストールと再インストールを検討してください。 MSDTC をアンインストールして再インストールするには、次の手順に従います。

  1. 管理者としてコマンド プロンプトを開きます。

  2. コマンド プロンプトで、次のように入力して分散トランザクション コーディネーター サービスをアンインストールします。 msdtc -uninstall

  3. コマンド プロンプトで、次のように入力して分散トランザクション コーディネーター サービスをインストールします。 msdtc –install

Von Bedeutung

MSDTC を再インストールすると、分散トランザクション コーディネーター サービスの既定の動作が変更される場合があります。 MSDTC を再インストールした後、分散トランザクション コーディネーター サービスが正しく動作することを確認するには、次の手順に従います。

  • MSDTC を再インストールすると、MSDTC セキュリティ構成オプションが既定値にリセットされる可能性があります。 MSDTC の再インストール後に、MSDTC セキュリティ構成オプションが適切な値に設定されていることを確認します。
    • MSDTC を再インストールすると、分散トランザクション コーディネーター サービスの スタートアップの種類 の値が変更される場合があります。 MSDTC を再インストールした後、分散トランザクション コーディネーター サービスの [スタートアップの種類 ] の値が [自動] に設定されていることを確認します。
    • MSDTC を再インストールするには、コンピューターの再起動が必要になる場合があります。 分散トランザクション コーディネーター サービスが正しく動作することを確認するには、MSDTC を再インストールした後にコンピューターを再起動します。

こちらもご覧ください

Windows Server クラスターのトラブルシューティングに使用するツールとユーティリティ