该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。?--在线等待

dgcat_6 2003-12-14 12:26:56
由于和其他公司开发数据接口,必须同步ORACLE 和 SQLSERVER的数据。打算在SQLSERVER里建立存储过程完成该工作。
现在成功建立SQLSERVER到ORACLE的DBLink,TEST
即:在SQL 查询分析器中执行:
SELECT * FROM OPENQUERY(TEST,'SELECT * FROM SCOTT.EMP')
成功。
但在遍历该SQL生成的CURSOR过程,根据不同条件,往SQLSERVER 不同表插入记录,出现“因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。?”
我对SQLSERVER不熟悉,查看了相关的帖子,
在服务中发现“BEGIN DISTRIBUTED TRANSACTION”已启动,以下开关已经打开
SET XACT_ABORT ON
SET ANSI_WARNINGS ON
SET ANSI_NULL_DFLT_ON on
由于条件限制,在测试环境下ORACLE和SQLSERVER安装在同一台服务器下。
请高手指点?如有具体例子更好!在线等待,急!!!!!!!!!

...全文
369 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyun2003 2003-12-15
  • 打赏
  • 举报
回复
JSS说的对啊,你建立一个ODBC数据源看看啊。我曾经遇到过类似的问题,不过那个时候我是要会滚数据。Oracle与sql server连接是好处问题的。是用ODBC数据源以后应该少了。但应该还有问题,不过我还没有遇到。呵呵~~~~~
dgcat_6 2003-12-14
  • 打赏
  • 举报
回复
例如:
SET XACT_ABORT ON
SET ANSI_WARNINGS ON
SET ANSI_NULL_DFLT_ON on
BEGIN DISTRIBUTED TRANSACTION --启动事务
select * into #temptable from openquery(test,'select * from scott.emp')
select * into A from #temptable
COMMIT TRANSACTION --提交事务
执行后,错误提示如下:
服务器: 消息 7391,级别 16,状态 1,行 5
该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]。
dgcat_6 2003-12-14
  • 打赏
  • 举报
回复
来人啊
dgcat_6 2003-12-14
  • 打赏
  • 举报
回复
没有人愿意参与该问题的讨论了?
j9988 2003-12-14
  • 打赏
  • 举报
回复
那你查一下MSDTC各项设置是否正确。
MS提供的数据源对分布式事务很怪。如果用ODBC可以的话,就说明设置正确。
就是数据源问题,考虑升级。

其它的就不能帮你提供有价值的东西了。
dgcat_6 2003-12-14
  • 打赏
  • 举报
回复
谢谢有人来帮忙!不会是版本的原因。联接服务器直接采用Oracle 数据库的SQL*Net别名方式,不经过ODBC,执行效率应该更快些吧
j9988 2003-12-14
  • 打赏
  • 举报
回复
建个ODBC数据源,链接服务器用ODBC来定义试试、

书上说:
“若要在 SQL Server 2000 和 Oracle 之间执行分布式事务,必须使用 Oracle 8.0.4.1 版本或更新版本。有关更多信息,请参见分布式事务。”

会不会版本太低?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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