vista中MS DTC服务无法开启,该怎么开启

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vista中MS DTC服务无法开启,该怎么开启相关的知识,希望对你有一定的参考价值。

错误消息:
Windows 不能在 本地计算机 启动 Distributed Transaction Coordinator。有关更多信息,查阅系统事件日志。如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 -1073737712。

参考技术A 今天到客户,中间层坏了,查看中间层日志:
Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务中止, 造成K3中间层无法注册,也无法修复K3中间层.
问题解决方法:setp 1
停止相关服务

使用TXT文件写入下列代码,保存成 BAT文件,进行执行
MSDTC_1.bat
@echo off
if %1== @echo Syntax: MSDTC1 Filename&goto :EOF
setlocal ENABLEDELAYEDEXPANSION
set filename=%1
if exist %filename% del /q %filename%
(
@echo Alerter
@echo EventSystem
@echo Browser
@echo TrkWks
@echo Dnscache
@echo Eventlog
@echo PolicyAgent
@echo dmserver
@echo Messenger
@echo Netlogon
@echo NtLmSsp
@echo Netman
@echo PlugPlay
@echo RpcSs
@echo RpcLocator
@echo NtmsSvc
@echo SamSs
@echo lanmanserver
@echo SENS
@echo Schedule
@echo LmHosts
@echo winmgmt
@echo Wmi
@echo W32Time
@echo lanmanworkstation
)>"%TEMP%\MSDTC1.TMP"
call :stopdtc>nul 2>&1
for /f "Tokens=*" %%L in ('reg query HKLM\System\CurrentControlSet\Services^|FINDSTR /I /B /L /C:"HKEY_LOCAL_MACHINE"') do (
set line=%%L
set key=HKLM!LINE:~18!
call :subkey "!key!"
call :testsvc
)
endlocal
goto :EOF
:stopdtc
sc stop msdtc
goto :EOF
:testsvc
for /f "Tokens=*" %%c in ('@echo !svc!^|findstr /I /B /E /L /G:"%TEMP%\MSDTC1.TMP"') do goto :EOF
set /a start=3
set /a type=0
call :getstart>nul 2>&1
call :gettype>nul 2>&1
if %type% LSS 16 goto :EOF
if %start% NEQ 2 goto :EOF
sc config !svc! start= demand
@echo sc config !svc! start= auto>>%filename%
goto :EOF
:gettype
for /f "Tokens=2,3" %%x in ('reg query "HKLM\System\CurrentControlSet\Services\!svc!" /V type^|FIND "REG_DWORD"') do (
set /a type=%%y
)
goto :EOF
:getstart
for /f "Tokens=2,3" %%x in ('reg query "HKLM\System\CurrentControlSet\Services\!svc!" /V start^|FIND "REG_DWORD"') do (
set /a start=%%y
)
goto :EOF
:subkey
set svc=%~nx1

重启机器

step 2

删除关联的注册表项及重新安装msdtc组件

MSDTC_2.bat

@echo off
setlocal
@echo %WINDIR%\System32\msdtc.exe -uninstall
%WINDIR%\System32\msdtc.exe -uninstall
call :delkey "HKCR\CID"
call :delkey "HKLM\SYSTEM\CurrentControlSet\Services\MSDTC"
call :delkey "HKLM\SYSTEM\ControlSet001\Services\MSDTC"
call :delkey "HKLM\SYSTEM\ControlSet002\Services\MSDTC"
call :delkey "HKLM\Software\Microsoft\MSDTC"
@echo %WINDIR%\System32\msdtc.exe -install
%WINDIR%\System32\msdtc.exe -install
endlocal
goto :EOF
:delkey
set key=%1
call :delkeyq %key% >nul 2>&1
@echo.
goto :EOF
:delkeyq
REG DELETE %key% /F

step 3

restlog

MSDTC_3.bat

@echo off
if %1== @echo Syntax: MSDTC3 Filename&goto :EOF
if not exist %1 Syntax: MSDTC3 Filename - %1 was NOT found.&goto :EOF
setlocal
set filename=%1
for /f "Tokens=*" %%r in ('type %filename%') do (
%%r
)
reg add "HKLM\SOFTWARE\Microsoft\MSDTC\XADLL" /F
regsvr32 mtxoci.dll
endlocal

运行完,看看日志

已成功安装 Microsoft Distributed Transaction Coordinator 服务。

以上是关于vista中MS DTC服务无法开启,该怎么开启的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 开启DTC分布式事务

64位windows下Apache服务无法开启,请帮个小忙。

怎么安装DTC服务?

远程服务器无反应应如何处理

在云服务开启密码本显示无服务怎么回事

开启fiddler后,无法访问电脑网络是怎么回事