[ホーム] - [Windows 11 サービス一覧] - [Distributed Transaction Coordinator]

Distributed Transaction Coordinator サービスの概要と起動の必要性

このページでは"Distributed Transaction Coordinatorサービス"とは何かに関して説明します。関連してこのサービスが必要性なのか、起動方法の変更方法、手動の停止や手動の開始方法に関して説明します。
作成日:2023/09/12

【目次】

サービス名 MSDTC
表示名 Distributed Transaction Coordinator
dll / exe 名 C:\WINDOWS\System32\msdtc.exe
説明 (マイクロソフト情報より引用) データベース、メッセージ キュー、またはファイル システムなど、複数のリソース マネージャーに分散されたトランザクションを調整します。このサービスが停止すると、これらのトランザクションは開始できません。このサービスが無効な場合は、このサービスに依存するサービスは開始できません。
セキュアPC上の起動必要性 ×


◎起動を強く推奨、○起動を推奨、△環境による、×停止を推奨、××停止を強く推奨



このサービスは何か


このサービスは分散トランザクション機能を提供します。Distributed Transaction Coordinatorとは簡単に言うと、MTS(Microsoft Transaction Server), COM+, データベース(Microsoft SQL サーバ)などを複数のPCに分散して効率的に処理する機能のことです。MS DTC と呼ばれています。分散されたトランザクション機能をサポートし,複数のサーバーをまたぐようなトランザクション処理で活用できます。
元は SQL Serverに搭載されていましたが拡張された機能です。


このサービスは必要か


通常は個人PCでは分散トランザクションは使用しないので不要。


トラブル


このサービスが起動できない障害が発生する場合があります。sysprep で複製した Windows Server で発生するようです。

HKLM\Software\Windows\MSDTC\SysprepInProgress の値が "1" の場合は起動に失敗する場合があるようです。手動でこの値を "0" に変更してみます。

参考:

Microsoft Distributed Transaction Coordinator (MSDTC) service does not start after you run Sysprep

https://support.microsoft.com/en-us/help/3202122/microsoft-distributed-transaction-coordinator-msdtc-service-does-not-s

サービスの起動方法を変更する

サービスの起動方法を変更にする方法を紹介します。サービス管理ツール(services.msc) で設定します。Windows 11 の画面で説明します。

(1)スタートメニューから[管理ツール] - [サービス]を選択します。

(2)以下の画面が表示されるため、"Distributed Transaction Coordinator"をダブルクリックします。

(3)「スタートアップの種類」から起動のタイプを設定します。設定が完了したら[OK]をクリックします。

各起動設定の内容は以下の通りです。



自動(延滞開始)・・・・・他の自動起動サービスが全て起動されてから起動されます。
自動・・・・・Windows 起動時に自動で起動されます。
手動・・・・・自動では起動されませんが、手動あるいは他のサービスなどから起動することが可能です。
無効・・・・・自動起動されません。手動でも起動できません。
自動(トリガー)・・・・・Windows 起動時に自動起動されますが、役目が終了したら自動的に停止します。
手動(トリガー)・・・・・他のサービスなどから起動されますが、役目が終了したら自動的に停止します。

sc コマンドでサービスを設定する

次にsc コマンドでコマンドプロンプトより設定する方法を紹介します。

(1)管理者でコマンドプロンプトを開きます。

参考:管理者権限でコマンドプロンプトを開く方法

(2)以下のコマンドを実行します。


自動起動設定



C:\>sc config MSDTC Start= auto


【注意】Powershellで実行すると、sc がコマンドレットである set-contentとバッティングしエラーとなるので注意してください。C:\WINDOWS\system32\sc.exe などフルパスで指定するなどの工夫が必要です。
手動



C:\>sc config MSDTC Start= demand

無効



C:\>sc config  MSDTC Start= disabled

自動(延滞開始)



C:\>sc config  MSDTC Start= delayed-auto

sc コマンドで以下のようなエラーが発生する場合はコマンドプロンプトを管理者として実行してください。


C:\>sc stop ServiceName

[SC] OpenService FAILED 5:
アクセスが拒否されました。

サービスを手動開始する

サービスを手動で開始する方法を紹介します。sc コマンドにより起動します。


C:\>sc start MSDTC

他の方法として net コマンドでも開始させることが可能です。


C:\>net start MSDTC


サービスを手動で停止する

サービスを手動で停止する方法を紹介します。sc コマンドにより停止します。


C:\>sc stop MSDTC

他の方法として net コマンドでも停止させることが可能です。


C:\>net stop MSDTC


サービスの設定を確認する

sc コマンドを利用してサービスの設定を確認する方法を紹介します。



c:\>sc queryex MSDTC 

SERVICE_NAME: MSDTC 
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 1  STOPPED 
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              : 

sc コマンドを利用してサービスの起動設定(自動、手動、無効など)を確認することが可能です。



c:\>sc qc MSDTC 
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: MSDTC
        TYPE               : 10  WIN32_OWN_PROCESS 
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\System32\msdtc.exe
        LOAD_ORDER_GROUP   : 
        TAG                : 0
        DISPLAY_NAME       : Distributed Transaction Coordinator
        DEPENDENCIES       : RPCSS
                           : SamSS
        SERVICE_START_NAME : NT AUTHORITY\NetworkService

サービスが起動中か確認する

net start コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら文字列が存在するはずなので findstr で検索しています。




c:\>net start   | findstr -i /c:"Distributed Transaction Coordinator" 

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
停止中

sc コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら"Status"が"Running" であるためfindstr で検索します。




c:\>sc query MSDTC   | findstr -i State   | findstr -i Running 

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
停止中

レジストリからサービスの設定を確認する

レジストリから reg コマンドでサービスの設定を確認する方法を紹介します。サービスの設定はレジストリに保存されています。その値を確認します。



c:\>reg query HKLM\System\CurrentControlSet\services\MSDTC   | findstr -i "group ObjectName DependOnService ErrorControl RequiredPrivileges ServiceSidType" 
    DependOnService    REG_MULTI_SZ    RPCSS\0SamSS
    ErrorControl    REG_DWORD    0x1
    ObjectName    REG_SZ    NT AUTHORITY\NetworkService
    RequiredPrivileges    REG_MULTI_SZ    SeChangeNotifyPrivilege\0SeCreateGlobalPrivilege
    ServiceSidType    REG_DWORD    0x1

[ホーム] - [Windows 11 サービス一覧]




(ご注意)本ページの内容の正当性は保障されません。内容に誤りがある場合も有ります。 本ページの情報は高セキュリティを目指すPCで起動すべきサービスの指針を示していますが、環境に依存するためすべての環境に当てはまることは保障しません。 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)


Copyright(c) TOOLJP.COM 1999-2023