COM+无法与Microsoft分布式事务协调程序交谈 - 小众知识

COM+无法与Microsoft分布式事务协调程序交谈

2013年01月27日 14:18:05 苏内容
  标签: COM/Microsoft
阅读:7328

COM+ 无法与Microsoft 分布式事务协调程序交谈


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 stopdtcnul 2&1


for f Tokens= %%L in ('reg query HKLMSystemCurrentControlSetServices^FINDSTR I B L CHKEY_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 getstartnul 2&1


call gettypenul 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 HKLMSystemCurrentControlSetServices!svc! V type^FIND REG_DWORD') do (


set a type=%%y


)


goto EOF


getstart


for f Tokens=2,3 %%x in ('reg query HKLMSystemCurrentControlSetServices!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%System32msdtc.exe -uninstall


%WINDIR%System32msdtc.exe -uninstall


call delkey HKCRCID


call delkey HKLMSYSTEMCurrentControlSetServicesMSDTC


call delkey HKLMSYSTEMControlSet001ServicesMSDTC


call delkey HKLMSYSTEMControlSet002ServicesMSDTC


call delkey HKLMSoftwareMicrosoftMSDTC


@echo %WINDIR%System32msdtc.exe -install


%WINDIR%System32msdtc.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 HKLMSOFTWAREMicrosoftMSDTCXADLL F


regsvr32 mtxoci.dll


endlocal 


运行完,看看日志 


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


扩展阅读