sqlserver中,对远程oracle链接服务器的事务问题

chuyi1199 2017-03-15 11:34:20
我在sqlserver中建立一个远程oracle链接服务器(名为MYORACLE),可以执行增删查改的操作。

执行sqlserver中的一个带事务的存储过程,此过程中包含 对远程oracle的一个insert操作,

却报错
链接服务器"MYORACLE"的 OLE DB 访问接口 "OraOLEDB.Oracle" 返回了消息 "新事务不能登记到指定的事务处理器中。

一定要像网上说的开启MSDTC、防火墙之类的配置吗?因为我对于这个两个服务器都没有太多的操作权限,只有一些基本的对数据库的操作。

比如下面这种过程:
1、查sqlserver中 3条数据,
2、插入到 oracle 3条数据,
3、插入oracle成功,则更新sqlserver中 3条数据的状态为‘sent’
4、更新sqlserver 成功,则整个过程 完成。其中任何一个操作出错,所有的操作都回滚。

在我的理解中,这种东西只能用事务处理,如果不用事务,有什么其他方法能做到吗?


...全文
346 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2017-03-15
  • 打赏
  • 举报
回复
确实要用事务处理,但是由于设计到2个不同的数据库,就想当于是分布式的事务,就要启动mstdc了,不然没办法协调。 如果事务中的一部分失败,就得再2个数据库中回滚了。
  • 打赏
  • 举报
回复
我问个问题 我 用sqlserver中建立一个远程oracle链接服务器,但是测试链接时就报错 用OraOLEDB.Oracle 这个访问接口,报错无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例。
LongRui888 2017-03-15
  • 打赏
  • 举报
回复
引用 4 楼 chuyi1199 的回复:
[quote=引用 2 楼 yupeigu 的回复:] 确实要用事务处理,但是由于设计到2个不同的数据库,就想当于是分布式的事务,就要启动mstdc了,不然没办法协调。 如果事务中的一部分失败,就得再2个数据库中回滚了。
大大有做过这种分布式的事务吗? 这个MSDTC配置 好麻烦啊,明明服务启动了,设置也设置了,就是无法用。 我之前也有想过做个程序来处理交互两个数据库的数据,最后发现还是绕不过这个MSDTC, 怎么样才能有一种类事务的纠错机制来实现这种“一错全错,全对提交”的过程[/quote] 你可以尝试通过程序来实现的,在程序中,通过判断每个子事务是否执行成功,最后如果不成功,可以控制子事务回滚,这样灵活度特别大
唐诗三百首 2017-03-15
  • 打赏
  • 举报
回复
chuyi1199 2017-03-15
  • 打赏
  • 举报
回复
引用 2 楼 yupeigu 的回复:
确实要用事务处理,但是由于设计到2个不同的数据库,就想当于是分布式的事务,就要启动mstdc了,不然没办法协调。 如果事务中的一部分失败,就得再2个数据库中回滚了。
大大有做过这种分布式的事务吗? 这个MSDTC配置 好麻烦啊,明明服务启动了,设置也设置了,就是无法用。 我之前也有想过做个程序来处理交互两个数据库的数据,最后发现还是绕不过这个MSDTC, 怎么样才能有一种类事务的纠错机制来实现这种“一错全错,全对提交”的过程
chuyi1199 2017-03-15
  • 打赏
  • 举报
回复
引用 1 楼 baidu_36457652 的回复:
我问个问题 我 用sqlserver中建立一个远程oracle链接服务器,但是测试链接时就报错 用OraOLEDB.Oracle 这个访问接口,报错无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例。
http://blog.csdn.net/sqlserverdiscovery/article/details/21175135 这是2楼版主的博文,你可以参考下。

22,209

社区成员

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

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