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 服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章