コンピュータが同じドメインで実行されていない場合に MSDTC による相互認証が失敗する

文書翻訳 文書翻訳
文書番号: 827805 - 対象製品
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
すべて展開する | すべて折りたたむ

目次

現象

同じドメインで実行されていない 2 台のコンピュータが、通信または分散トランザクションに MSDTC (Microsoft 分散トランザクション コーディネータ) を使用すると、相互認証に失敗することがあります。

Microsoft Windows Server 2003 Enterprise Edition を実行しているコンピュータで、Microsoft SQL Server 2000 のリンク サーバーに対して分散トランザクションを実行すると、次のエラー メッセージが表示されることがあります。
サーバー : メッセージ 7391、レベル 16、状態 1、行 2
OLE DB プロバイダ 'SQLOLEDB' は分散トランザクションを開始できなかったので、要求した操作は実行されませんでした。[OLE/DB provider returned message: 指定されたトランザクション コーディネータに、新規トランザクションを参加できませんでした。]

原因

通信しているコンピュータどうしが同じドメインに存在しない場合、MSDTC プロキシにより MSDTC が正しく認証されないことがあります。

回避策

警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。

レジストリの編集方法の詳細については、レジストリ エディタ (Regedit.exe) のヘルプの「キーおよび値を変更する」、または Regedt32.exe のヘルプの「レジストリ情報の追加と削除」と「レジストリを編集する」を参照してください。編集する前にレジストリのバックアップを行うようにしてください。

この問題を解決するには、Windows Server 2003 コンピュータで RPC セキュリティを無効にします。RPC セキュリティは、Windows Server 2003 の新しい DTC 機能です。RPC セキュリティを無効にすると、RPC 呼び出しに関する DTC 認証のセキュリティ レベルが Microsoft Windows 2000 Server で使用可能なレベルに戻ります。これを行うには、以下の手順を実行して、TurnOffRpcSecurity レジストリ値の DWORD 値を 1 に設定します。
  1. レジストリ エディタ (Regedt32.exe) を起動します。
  2. 次のレジストリ キーを見つけます。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
  3. [編集] メニューの [新規] をポイントして [DWORD 値] をクリックし、次のレジストリの値を追加します。
    元に戻す全体を表示する
    値の名前 データ型
    TurnOffRpcSecurity REG_DWORD 1
  4. レジストリ エディタを終了します。
: Windows Server 2003 Service Pack 1 のインストール後、レジストリ エントリ TurnOffRpcSecurity は 0 に設定されます。コンピュータを再起動する前に、レジストリ エディタを使用して、値を 1 に戻す必要があります。

状況

この動作は仕様です。

詳細

現象の再現手順

  1. 両方のコンピュータが Windows Server 2003 を実行していることを確認します。
  2. Service Pack 3 (SP3) が適用された SQL Server 2000 を両方のコンピュータにインストールします。
  3. MSDTC が両方のコンピュータで開始されていることを確認します。
  4. 1 台目のコンピュータで、SQL クエリ アナライザ (Isqlw.exe) ユーティリティを起動し、ローカルの SQL Server に接続します。
  5. 2 台目のコンピュータをリンク サーバーとして追加します。これを行うには、SQL クエリ アナライザで次の Transact-SQL ステートメントを実行します。
    EXEC sp_addlinkedserver  'remote_server',  N'SQL SERVER'
    GO
    : 上記ステートメントの remote_server は 2 台目のコンピュータの名前に置き換えます。
  6. SQL クエリ アナライザで次の Transact-SQL ステートメントを実行します。
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM remote_server.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    この資料の「現象」に記載されているエラー メッセージが表示されることがあります。
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
329332 リンク サーバーに対して分散トランザクションを実行するとエラー 7391 が表示される
Microsoft COM+ 1.5 の詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/html/e7073ba5-6b19-4d94-8cc0-b4e16bb44afd.asp

プロパティ

文書番号: 827805 - 最終更新日: 2007年12月5日 - リビジョン: 4.4
この資料は以下の製品について記述したものです。
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft COM+ 1.5
キーワード:?
kbinfo kbtshoot kbtransaction kbsecurity kbrpc kbauthentication kbdtc kbdomain KB827805
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com