最近在做一个项目的时候使用了.NET中的System.Transactions(分布式事务),当项目开发完成以后,调用的时候遇到了MSDTC的问题,在查阅了相关资料后将这个问题解决了,大致的问题主要是使用了分布式事务,而无法访问到数据库的问题,网上很多解决方法,都是启动一下服务,然后再修改服务组件的选项,但是当Web服务器与数据库不在同一台机器上的时候,还是会报错。 错误如下:
MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。 该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。 该服务用于管理多个服务器。
在服务中启动Distributed Transaction Coordinator服务
修改组件服务里的选项 点击打开开始—>管理工具—>组件服务 依次展开组件服务—>计算机—>我的电脑—>Distributed Transaction Coordinator,右击本地DTC,选择属性,按下图进行设置,设置完成后点击确定。
这个时候本地已经可以正常使用了,但是Web服务器与数据库服务器不在同一台机器上的时候,还是会报错,这个时候需要在数据库服务器上打开一个端口和一个应用程序。
打开防火墙设置,添加出/入站规则 端口:135 应用程序:C:\Windows\System32\msdtc.exe