事務使用時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 回車,搞定!