应用TransactionScope时报错:服务器上的MSDTC不可用

arrow072501 2009-02-25 04:35:07
开发环境: windows 2003server, vs2008
数据库服务器:windows2003,sqlserver2005

已经确认MSDTC启动,并且客户端和服务器端已经通过DTCP测试成功

但是程序运行是还是报错,内容如下:
“服务器上的MSDTC不可用”

请问,如何解决?? 因为确认了客户端和服务器的MSDTC都已经启动,并且双方测试都成功
这样的话,应该不存在“服务器上的MSDTC不可用”这种错误啊。。


有哪位大侠帮忙解决一下
...全文
5587 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
随智阔 2010-12-29
  • 打赏
  • 举报
回复
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 回车,搞定!

随智阔 2010-12-29
  • 打赏
  • 举报
回复
msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器


控制面板--管理工具--服务--找到Distributed Transaction Coordinator--禁用
MSDTC(分布式交易协调器)。协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe。
依存关系:Remote Procedure Call(RPC)和Security Accounts Manager
建议:一般家用计算机涉及不到,除非你启用Message Queuing服务,可以停止。

解决办法:
1. 在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动

2.在CMD下运行"net start msdtc"开启服务后正常
唐诗三百首 2010-12-21
  • 打赏
  • 举报
回复
既然两边MSDTC服务都已启动,而且测试正常.
那么就有可能是程序的问题,建议楼主把程序执行的SQL贴出来看看.
btxp163 2010-12-21
  • 打赏
  • 举报
回复
我刚好也遇到这问题了,我用的express版的,在哪里启用MSDTC服务
youcunzai 2010-07-26
  • 打赏
  • 举报
回复
我刚想到了;我其他的存储过程 是 把 begin tran 这个事务给去掉了的;就能正常执行了!!
youcunzai 2010-07-26
  • 打赏
  • 举报
回复
奇怪的就是,我用在insert 就正常的;但是用 update 就 报这个错误~~!
lihuinihao6315 2009-07-06
  • 打赏
  • 举报
回复
程序怎么写的貌似,多连接时,连接同一各数据库会出现{Rows to be affected by command1: 1
returnValue for command2: 1
Exception Message2: 服务器 'ALLTANG01\SQLEXPRESS' 上的 MSDTC 不可用。
}
把多个同样的连接 改成不同的。。
  • 打赏
  • 举报
回复
MSDTC需要在组件管理里面进行设置。

在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动

1.
A.不用事务,关用SELECT 语句.是否可以分布式查询?
B.LINKSERVER 在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)
C.DBCC TRACEON (3604, 7300)--用跟踪看更详细错误信息.
D.下载MS提供的DTCPing.exe 分装在两台机上,按README说明来运行它.看出错信息.
http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/DTCPing.exe
2.
两台机的MSDTC是否都打开了.
3.
MSDTC设置是否正确.
1).打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2).转至"组件服务管理工具"。
3).浏览至"启动管理工具"。
4).选择"组件服务"。
a.展开"组件服务"树,然后展开"我的电脑"。
b.右键单击"我的电脑",然后选择"属性"。
C.在MSDTC选项卡中,确保选中了下列选项: 网络 DTC 访问 网络管理 网络事务 XA 事务
e.另外,"DTC登录帐户"一定要设置为"NT Authority\NetworkService"。
5).单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
所有的依赖服务将被停止。请按''是''继续"。单击"是"继续。
6).单击"确定"关闭"我的电脑"属性窗口。
4.
MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.
5.
有的机由于各种原因,SQLOLEDB不能使用分布式事务,更改为"MSDASQL" 的ODBC方式联接.
使用RRAS而不是RAS.(控制面版--管理工具--远程服务管理器)
Check whether you are using Remote Access Server (RAS) to access remote servers. If so, make sure that you have implemented Routing RAS (RRAS). Linked server does not work on RAS because RAS allows only one way communication.
6.检查你的两台服务器是否在同一个域中. 如果不在同一个域中,是否建立可信任联接.
7.如果是WIN2000,升级到SP4
8.升级MDAC到2.6以上,最好是2.8.
9.要安装SQL的最新补丁
no_mIss 2009-02-25
  • 打赏
  • 举报
回复
经常性的还是偶尔?
shuiniu 2009-02-25
  • 打赏
  • 举报
回复
参考:http://losingmyself.cn.cnblogs.com/archive/2005/05/19/158904.html
arrow072501 2009-02-25
  • 打赏
  • 举报
回复
顶,没人知道这种情况吗

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧