该操作未能执行,因为 OLE DB 提供程序SQLOLEDB无法启动分布式事务。

wsxqaz 2006-09-17 10:45:14
存储过程会先在本地表上添加一行数据,然后到远程数据库表上添加一行,但是执行时出项如下错误,如果去掉事务处理在执行就没有问题,错误内容如下

该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]

我启动了SQLServerAgent服务但是还是这个错误
...全文
883 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsxqaz 2007-03-20
  • 打赏
  • 举报
回复
哭一下
chnking 2007-03-10
  • 打赏
  • 举报
回复
痛苦啊
chnking 2007-03-09
  • 打赏
  • 举报
回复
wangdehao(找找找(现在很幸福)) :

也是一直解决不了吗?
chnking 2007-03-09
  • 打赏
  • 举报
回复
顶一下了
wangdehao 2007-03-09
  • 打赏
  • 举报
回复
这个问题确实是个问题,我也碰见过几会
chnking 2007-03-08
  • 打赏
  • 举报
回复
看来sql server的分布式事务也只能是摆着看的了
OracleRoob 2007-03-08
  • 打赏
  • 举报
回复
这个问题,还没有发现能圆满解决的!
chnking 2007-03-08
  • 打赏
  • 举报
回复
zjcxc(邹建)的解决方案:

一.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

二.两台机的MSDTC是否都打开了.

三.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.单击"确定"关闭"我的电脑"属性窗口。

四.
MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.

五.
有的机由于各种原因),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.


七.检查你的两台服务器是否在同一个域中.
如果不在同一个域中,是否建立可信任联接.

八.如果是WIN2000,升级到SP4

九.升级MDAC到2.6以上,最好是2.8.

十.要安装SQL的最新补丁: sp3a
'全部补丁的位置
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766

'应该安装的补丁sql 2000 sp3
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe


但是,我的情况是两台win2003+sql2005的服务器,在事务中使用链接服务器,也是提示:“'SQLOLEDB' 无法启动分布式事务”

按照上述解决方案做:

一.不使用事务用select分布式查询,没有问题
使用事务用select分布式查询,也没有问题
使用事务用insert往链接服务器中插入记录,就出现“'SQLOLEDB' 无法启动分布式事务”错误。

二.两台机的MSDTC是否都打开了. --错误依然
三.两台MSDTC都按照上述说明就行设置了。--错误依然
四.两台服务器都启动着RPC服务,135端口也都开着。--错误依然
五.把连接服务器改成MSDASQL方式的连接。--错误依然
七.两台服务器不在同一个域,在msdtc的安全设置中都设置了“不需要进行验证”。--错误依然

后面的几项,因为我是win2003+sql2005,系统够更新的。

最后,--错误还是依然。

我晕。。。。。。。。。。
rfq 2006-09-18
  • 打赏
  • 举报
回复
服务器之间的认证有问题!昨天的一个帖子好像有解决法法,找找
OracleRoob 2006-09-18
  • 打赏
  • 举报
回复
MSDTC服务
wsxqaz 2006-09-18
  • 打赏
  • 举报
回复
有人和我讲要启动SQLServerAgent服务我启动了但是还是不管用,我现在将事务全都去掉了,可以执行但是就是担心出问题时怎么办
wsxqaz 2006-09-17
  • 打赏
  • 举报
回复
算是,正试使用时是局域网,现在是在写程序阶段,所以是在一台机器上,设置了两个数据库
中国风 2006-09-17
  • 打赏
  • 举报
回复
你是不是调用的局域网的数据库
Well 2006-09-17
  • 打赏
  • 举报
回复
要启动SQL了一个服务就可以处理 ,至于什么样的服务现在不太记得了。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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