事務使用時MSDTC不可用解決辦法
在使用Linq對多表進行插入的時候,使用了TransactionScope
using (TransactionScope scope = new TransactionScope())
{
BLL.R_Paper_QbankBLL.DeleteByPaperId(pid);
BLL.M_Test_PapeBLL.Delete(pid);
scope.Complete();
}
JsHelper.Alert("刪除成功", this);
使用時提示“MSDTC不可用”,這是怎麼回事呢?
MSDTC(分布式交易協調器),協調跨多個數據庫、消息隊列、文件係統等資源管理器的事務。該服務的進程名為Msdtc.exe,該進程調用係統Microsoft Personal Web Server和Microsoft SQL Server。該服務用於管理多個服務器 。
位置:控製麵板--管理工具--服務--Distributed Transaction Coordinator
依存關係:Remote Procedure Call(RPC)和Security Accounts Manager
建議:一般家用計算機涉及不到,除非你啟用Message Queuing服務,可以停止。
解決辦法:
方法1. 在windows控製麵版-->管理工具-->服務-->Distributed Transaction Coordinator-->屬性-->啟動
方法2. 在CMD下運行"net start msdtc"開啟服務後正常。
注:如果在第1步Distributed Transaction Coordinator 無法啟動,則是因為丟失了日誌文件,重新創建日誌文件,再啟動就行了。重新創建 MSDTC 日誌,並重新啟動服務的步驟如下:
(1) 單擊"開始",單擊"運行",輸入 cmd 後按"確定"。
(2) 輸入:msdtc -resetlog (注意運行此命令時,不要執行掛起的事務)
(3) 最後輸入:net start msdtc 回車,搞定!
參考地址:https://blog.csdn.net/bobwu/archive/2009/07/30/4392616.aspx
最後更新:2017-04-02 22:16:01