天天看点

事务使用时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"开启服务后正常。

<a href="http://blog.photo.sina.com.cn/showpic.html#url=http://s1.sinaimg.cn/orignal/67aaf444gb55b14c08380" target="_blank"></a>

事务使用时MSDTC不可用解决办法

注:如果在第1步distributed transaction coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。重新创建 msdtc 日志,并重新启动服务的步骤如下:

(1) 单击"开始",单击"运行",输入 cmd 后按"确定"。

(2) 输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务)

(3) 最后输入:net start msdtc 回车,搞定!