MSDTC不能启动的几个解决方法

进程文件: msdtc 或者 msdtc.exe
进程名称: Distributed Transaction Coordinator
描述: msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器。
msdtc.exe是一个并列事务,是分布于两个以上的数据库,消息队列,文件系统或其他事务保护资源管理器,删除要小心。
如果你确定不会用到它,那就可以删除。
项目里要用到事务,而.NET事务需要用到MSDTC,但是启动时,报错。经实验,找到以下解决方法
1. 如果只是提示需要MSDTC
那么点开始→运行→输入命令"net start msdtc",运行该命令即可.
2. 如果启动不了,请查看事件查看器
在系统事件中有错误:Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止。
经多次试验,发现这主要是系统无法找到MS DTC 日志文件造成的,只要创建一下就可以了:
点开始→运行→输入命令"msdtc -resetlog",运行该命令即可.
之后,重新启动电脑,或者运行服务中的"Distributed Transaction Coordinator "服务均可.
原因
因为 MSDTC 服务无法访问 %windir%\System32\Msdtc\Msdtc.log 文件发生此问题。
解决方案
要解决此问题, 根据需要按它们在其中显示顺序使用下列方法。
方法 1: 重新创建 MSDTC 日志
重新创建 MSDTC 日志, 并重新启动服务。 要这样做, 请按照下列步骤操作: 1. 单击 开始 , 单击 运行 , 类型 cmd然后单击 确定 。
2. 在命令提示符, 键入以下命令, 然后按 ENTER 键: msdtc -resetlog 如果使用不当 警告 MSDTC - resetlog 命令可能导致数据损坏。确保您运行此命令时,执行不具有任何挂起事务。
3. 键入下列命令, 然后按 ENTER 键: net start msdtc
MSDTC 服务帐户权限设置登录方法 2:
如果方法 1 不能解决问题, 设置登录帐户对 MSDTC 服务来具有读取和写入权限 Msdtc.log 文件。要这样做, 请按照下列步骤操作: 1. 单击 开始 ,单击 运行 , 类型 cmd然后单击 确定 。
2. 在命令提示符处, 键入 control admintools然后按 Enter。
3. 双击 服务 。
4. 在 服务 窗格, 找到 DistributedTransactionCoordinator 。
5. 列, 登录为 " 中注意帐户名称。
注意 : 默认登录帐户 MSDTC 服务是 NETWORKSERVICE 帐户。
6. 启动 Windows Explorer, 并再打开 %windir%\System32\Msdtc 文件夹。
7. 右击, Msdtc.log 文件, 然后单击 属性 。
8. 单击 安全 选项卡。
9. 单击登录帐户名称, 在步骤 5 中记录。 例如, 单击 NETWORKSERVICE 帐户名称。
10. 在 权限 窗格中, 单
击以选中 允许复选框对于下列权限: ? 读取和执行
? 读取
? 写入
1、首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与
Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。
2、进入事件查看器,发现msdtc服务没有正常启动。
3、删除注册表中的键:
? HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
? HKEY_CLASSES_ROOT\CID
4、停止MSDTC服务:net stop msdtc
5、卸载MSDTC服务:msdtc -uninstall
6、重新安装MSDTC服务:msdtc -install
7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看]
8、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里]
9、同步IIS metabase中IWAM_MYSERVER的密码
上面是网上找的方法.我是根据日志里的提示 在命令提示符里输入:msdtc -resetlog
把日志全部清除.显示启动msdtc成功
再在组件服务中能够进入 com+了.
又找到这个...
Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止。
方法一 :
在命令提示符下执行 msdtc -resetlog(RESETLOGS的作用是将日志序列重置,这样以前的归档都将作废)
方法二 :
问题解决:
setp 1
停止相关服务
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 服务。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamYux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值