フェールオーバー クラスタが設定された SQL Server で MSDTC を再構築または移動する方法

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

目次

概要

この資料では、フェールオーバー クラスタが設定された SQL Server で破損した Microsoft 分散トランザクション コーディネータ (MSDTC) を再構築する方法と、MSDTC のクラスタ化されたリソースを新しいグループに移動する方法について説明します。

MSDTC はクラスタ ノードではクラスタ リソースとして実行することだけがサポートされています。クラスタ上で MSDTC をスタンドアロン モードで実行することはサポートしていませんし、お勧めしません。Windows クラスタで MSDTC を非クラスタ リソースとして使用すると、問題が発生します。この構成で問題が発生する理由として、クラスタ フェールオーバーの発生時にトランザクションが孤立し、データが破損する可能性があることが挙げられます。

: これらの手順は、リモート接続ではなく、使用中のコンピュータで直接実行する必要があります。

: この資料の情報は Microsoft Windows Server 2003 には適用されません。Microsoft Windows Server 2003 ベースのシステムについては、次の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
301600 Windows Server 2003 クラスタで Microsoft 分散トランザクション コーディネータを構成する方法

詳細

SQL Server フェールオーバー クラスタ サーバーで MSDTC を再構築する

警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。
  1. すべてのサービスの [スタートアップの種類] を [手動] に変更します。ただし、以下のサービスが存在する場合、これらのサービスの設定は変更しません。
    • Alerter
    • Cluster Service
    • Computer Browser
    • Distributed File System
    • Distributed Link Tracking Client
    • Distributed Link Tracking Server
    • DNS Client
    • Event Log
    • IPSEC Policy Agent
    • License Logging Service
    • Logical Disk Manager
    • Messenger
    • Net Logon
    • NTLM Security Support Provider
    • Network Connectors
    • Plug and Play
    • Process Control
    • Remote Procedure Call (RPC) Locator
    • Remote Procedure Call (RPC) Service
    • Remote Registry Service
    • Removable Storage
    • Security Accounts Manager
    • Server
    • Spooler
    • TCP/IP NetBIOS Helper
    • Time Service
    • Windows Management Instrumentation Driver Extensions
    • Windows Time Service
    • Workstation
    : この一覧では Microsoft Windows NT 4.0 Enterprise Edition と Windows 2000 Advanced Server の両方を対象としているため、インストール環境によっては含まれていないサービスがあります。
  2. コントロール パネルを閉じて、サーバーを再起動します。再起動することにより、サービスで読み込まれた DLL のメモリが初期化されます。再起動しないと、これらのサービスがメモリ内に残り、システム リソースがロックされます。
  3. Windows NT 4.0 を使用している場合、すべてのノードで msdtc -remove を実行します。Windows 2000 を使用している場合、すべてのノードで msdtc -uninstall を実行します。
  4. レジストリに次のキーが存在する場合は、削除します。

    HKEY_CLASSES_ROOT\CID

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet0\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet1\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet2\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet3\Services\MSDTC


    : ControlSet の数値はシステムによって異なります。
  5. Z:\MSDTCLog ディレクトリを削除します。Z はこのディレクトリがあるクラスタ ディスクです。

    警告 : 保存の必要があるアクティブなログとコミットされていないトランザクションがある場合は、このディレクトリを削除しないでください。続行せずに、その先の手順については SQL Server のサポート担当者に問い合わせてください。
  6. Windows NT 4.0 を使用している場合、クラスタの両方のノードで以下のファイルを削除します。Windows 2000 を使用している場合は、この手順を省略できます。
    • Adme.dll
    • Dac.exe
    • Dacdll.dll
    • Dtccfg.cpl
    • Dtccm.dll
    • Dtctrace.dll
    • Dtctrace.exe
    • Dtcxatm.dll
    • Dtcuic.dll
    • Dtcuis.dll
    • Dtcutil.dll
    • Enudtc.dll
    • Logmgr.dll
    • Msdtc.exe
    • Msdtc.dll
    • Msdtcprx.dll
    • Mtxclu.dll
    • Msdtctm.dll
    • Svcsrvl.dll
    • Xolehlp.dll
    : デフォルトでは、MSDTC は有効な IP アドレス リソース、ネットワーク名リソースおよび物理ディスク リソースを含む最初のグループにインストールされます。SQL Server 7.0 が既にクラスタ化されていて、この条件を満たしている最初のグループである場合、このグループで検出された最初のリソースが MSDTC によって使用されます。最初のリソースは SQL Server リソースまたは MSDTC リソースの場合があります。

    MSDTC セットアップは、SQL Server Service Pack 2 CD-ROM の \x86\Other フォルダにある Dtcsetup.exe です。これは Windows NT 4.0 システムの場合です。Windows 2000 システムでは %systemroot%\System32 フォルダ (通常は Winnt\System32 フォルダ) から Dtcsetup.exe ファイルを使用します。

    警告 : Dtcsetup.exe を実行する前に、すべてのクラスタのリソース グループがノード 1 によって制御されていることを確認してください。
  7. 最初のノードで Dtcsetup.exe を実行します。この操作により、上記のファイルが %windir%/System32 フォルダにコピーされます。

    警告 : Dtcsetup.exe プログラムの完了時に表示されるメッセージを注意深く読んでください。メッセージを注意深く読むまでは、[OK] をクリックしないでください。これと同じ手順を他のノードでも実行してから [OK] をクリックすることが必要な場合があります。

    : Microsoft Windows 2000 では、最初のノードで Dtcsetup.exe を実行した後に再び実行を要求された場合に限り、クラスタの他のノードで Dtcsetup.exe を実行します。
  8. 2 番目のノードで Dtcsetup.exe の実行を求めるメッセージが表示されたら、それに従います。Dtcsetup.exe が最初のノードでメッセージを表示せずに完了した場合は、続けて 2 番目のノードで Dtcsetup.exe を実行します。

    : 各ノードで Dtcsetup.exe が正常に完了したことを確認するには、イベント ビューアをチェックします。

    警告 : クラスタ リソースを移動しないでください。リソースを移動した場合、またはこの処理中にフェールオーバーが発生した場合は、最初からやり直す必要があります。
  9. 2 番目のノードでのインストールで [OK] ボタンをクリックした後、最初のノードで [OK] をクリックすると、インストールの指示に応じてコンピュータを再起動できます。
  10. Windows 2000 ユーザーのみ : Dtcsetup.exe を実行した最初のノードで、コマンド プロンプトを開き、comclust.exe と入力し Enter キーを押します。最初のノードでこの手順を完了してから、2 番目のノードでもこの手順を繰り返します。
  11. クラスタ ディスクに DTCLOG フォルダが作成されたことを確認します。デフォルトでは、MSDTC サービスはローカル システム アカウントで開始されます。このローカル システム アカウントには DTCLOG フォルダへのフル コントロールのアクセス許可が必要です。

SQL Server 6.5 および SQL Server 7.0 の仮想サーバー上で MSDTC を通常のインストール環境に戻す手順

問題

SQL Server のクラスタ化を解除せずに MSDTC を再インストールするために、Dtcsetup.exe を実行しました。IP アドレスまたはネットワーク名が使用されています。この処理の間、ユーザーは SQL Server のインスタンスと同じグループにある MSDTC クラスタ リソースの従属関係を制御できません。

SQL Server がインストールされているグループとは異なるグループに MSDTC リソースがある場合は、これは当てはまりません。

解決方法
  1. MSDTC のクラスタ IP アドレス リソースを作成して、"MSDTC IP ADDRESS" という名前を付け、一意の IP アドレスを割り当てます。これは実在の IP アドレスである必要があります (架空のアドレスにはできません)。正常に作成されたら、リソースをオンラインにします。
  2. クラスタ ネットワーク名リソースを作成して、"MSDTC Network Name" という名前を付け、MSDTC IP ADDRESS に依存させます。ネットワーク名パラメータでは、"CLUSTDTC" などの一意の名前を使用します。
  3. クラスタ アドミニストレータで、MSDTC クラスタ リソースを右クリックし、[オフライン] をクリックします。
  4. MSDTC クラスタ リソースを右クリックし、[プロパティ] をクリックします。
  5. [resource_name のプロパティ] ダイアログ ボックスで、[依存関係] タブをクリックし、[変更] をクリックします。
  6. [利用できるリソース] ボックスの一覧で、新しく作成した MSDTC リソース (MSDTC ネットワーク名と IP アドレス) をクリックし、[-->] をクリックします。[依存関係] ボックスの一覧に新しく作成したリソースが追加されます。
  7. [依存関係] ボックスの一覧に表示されている既存の SQL Server のクラスタ リソースをすべてクリックし、[<--] をクリックします。
  8. [OK] をクリックし、もう一度 [OK] をクリックします。
  9. MSDTC リソースを右クリックし、リソースをオンラインに戻して、フェールオーバーをテストします。
  10. Windows 2000 を使用している場合は、システム ファイルがすべて正常であることを確認するために、Windows 2000 ファイル チェッカーを使用して、システム ファイルを確認することをお勧めします。これを実行するには、コマンド プロンプトで、sfc /scannow と入力します。

    : Windows 2000 CD-ROM および Windows 2000 Service Pack CD-ROM を用意してください。不整合が検出された場合、CD-ROM が必要になります。

特定のグループに MSDTC リソースを移動する

デフォルトでは、MSDTC リソースはオペレーティング システムに応じて異なる方法でインストールされます。

Windows NT 4.0

MSDTC により、有効な IP アドレス リソース、ネットワーク名リソースおよびクラスタ ディスク リソースを含む最初のグループに、クラスタ化された MSDTC がインストールされます。これは、通常、SQL Server グループです。

Windows 2000

: SQL Server がクラスタ化されている場合、必要な MSDTC のインスタンスは 1 つだけです。MSDTC リソースは、専用のグループにインストールすることをお勧めします。このグループには専用のディスクおよび IP リソースを使用する必要があります。次にお勧めするのは、MSDTC リソースをクラスタ グループまたはクォーラム グループに配置する方法です。MSDTC リソースが既にインストールされていて、SQL Server が正常に機能している場合は、リソースがどのグループに配置されているかにかかわらず、その場所を変更しないことをお勧めします。クラスタがまだ実稼働環境に置かれていない場合、次の手順に従って MSDTC リソースを SQL Server グループ以外のグループに移動することをお勧めします。

SQL Server 6.5 と SQL Server 7.0 のフェールオーバー クラスタ上で MSDTC を SQL Server グループに移動する場合は、この資料の「SQL Server 6.5 および SQL Server 7.0 の仮想サーバー上で MSDTC を通常のインストール環境に戻す手順」の手順を実行する必要があります。

MSDTC リソースを移動する手順
  1. クラスタ アドミニストレータを起動します。Windows NT 4.0 用に作成されたすべてのリソースを削除します。これらは、通常、MSDTC、MSDTC ネットワーク名、および MSDTC IP アドレスです。

    : Windows 2000 では MSDTC がデフォルトでクラスタ グループ リソースにインストールされるため、ユーザーに必要な作業は、MSDTC リソースをオフラインにして削除することのみです。
  2. 選択したインストール先のグループ (たとえば SQL Server グループ) で、以下のリソースを作成します。
    1. DTC を作成するドライブに依存する MSDTC TCP/IP アドレス
    2. MSDTC TCP/IP アドレスに依存する MSDTC ネットワーク名
    3. MSDTC ネットワーク名に依存する、分散トランザクション コーディネータ リソース
  3. 以下のいずれかの手順を実行します。
    • 既存の Dtclog フォルダを、以前のドライブから新しいドライブに移動します。
    • 以前の Dtclog フォルダを削除して、MSDTC をインストールするドライブに Dtclog というフォルダを作成します (手順 2. と同じ)。
  4. コマンド プロンプトで、ノード A に comclust と入力します。これが完了したら、ノード B でこの手順を繰り返します。
  5. ノード A のコマンド プロンプトから msdtc -resetlog を実行します。

    警告 : msdtc -resetlog コマンドによる操作には危険が伴います。この操作を実行する場合は、アクティブなトランザクションがないことを確認してください。
  6. すべての MSDTC リソースをオンラインにします。
Windows Server 2003

Windows Server 2003 を使用している場合は、次の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
301600 Windows Server 2003 クラスタで Microsoft 分散トランザクション コーディネータを構成する方法

プロパティ

文書番号: 294209 - 最終更新日: 2006年2月6日 - リビジョン: 9.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 6.5 Enterprise Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
キーワード:?
kbinfo KB294209
"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