TransactionScope使用(二)——msdtc不可用

    在上一個實例中是將所有的代碼都放在了ts的範圍內去執行,現在把三個操作分別定義自己的數據庫連接封裝在三個不同的方法中,然後將這三個方法放在ts範圍內去執行。經過測試出現了一個錯誤“msdtc不可用”。網上查看了一下,原來需要把這個服務打開。於是本人查看了一下計算機服務,的確沒有打開,打開後程序運行正常。但是之後問題出來了,爲什麼在上一個實例的時候沒有報錯呢?先來說說這個服務,百度上是這樣描述的:

 

描述: msdtc.exe是微軟分佈式傳輸協調程序。該進程調用系統Microsoft Personal Web ServerMicrosoft SQL Server。該服務用於管理多個服務器。

msdtc.exe是一個並列事務,是分佈於兩個以上的數據庫,消息隊列,文件系統或其他事務保護資源管理器,刪除要小心。

   通過上面的描述,本人覺得可能是將方法進行封裝的時候各自都定義了自己不同的數據庫連接,導致需要系統使用msdtc服務或者就是ts在將代碼封裝在方法中執行時有別的什麼要求。通過將方法修改爲傳入同一個連接之後,執行後就沒問題了(當然這時是把msdtc服務關閉的)。印證了第一個猜測。以下是轉網上對msdtc設置的文字:

 

MSDTC(分佈式交易協調器),協調跨多個數據庫、消息隊列、文件系統等資源管理器的事務。該服務的進程名爲Msdtc.exe,該進程調用系統Microsoft Personal Web ServerMicrosoft SQL Server。該服務用於管理多個服務器 .

位置:控制面板--管理工具--服務--Distributed Transaction Coordinator

依存關係:Remote Procedure Call(RPC)Security Accounts Manager

建議:一般家用計算機涉及不到,除非你啓用Message Queuing服務,可以停止。解決辦法:

1. windows控制面版-->管理工具-->服務-->Distributed Transaction Coordinator-->屬性-->啓動       

2.CMD下運行"net start msdtc"開啓服務後正常。

注:如果在第1Distributed Transaction Coordinator 無法啓動,則是因爲丟失了日誌文件,重新創建日誌文件,再啓動就行了。重新創建 MSDTC 日誌,並重新啓動服務的步驟如下:

(1) 單擊"開始",單擊"運行",輸入 cmd 後按"確定"

(2) 輸入:msdtc -resetlog (注意運行此命令時,不要執行掛起的事務)

(3) 最後輸入:net start msdtc 回車,搞定!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章