asp.net事务使用时MSDTC不可用怎么办?解决方法

发布时间:2019-09-20编辑:脚本学堂
本文介绍了asp.net事务使用时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。
该服务用于管理多个服务器 。(www.jb200.com 脚本学堂 整理)

位置:控制面板--管理工具--服务--Distributed Transaction Coordinator
依存关系:Remote Procedure Call(RPC)和Security Accounts Manager
建议:一般家用计算机涉及不到,除非你启用Message Queuing服务,可以停止。

解决办法:
方法1. 在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动
方法2. 在CMD下运行"net start msdtc"开启服务后正常。
事务使用时MSDTC不可用解决办法 16-1

注:如果在第1步Distributed Transaction Coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。
重新创建 MSDTC 日志,并重新启动服务的步骤:
1)、单击"开始",单击"运行",输入 cmd 后按"确定"。
2)、输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务)
3)、最后输入:net start msdtc 回车。