当前位置: 代码迷 >> C# >> C# 多个oracle 数据库事务怎么办?
  详细解决方案

C# 多个oracle 数据库事务怎么办?

热度:45   发布时间:2016-05-05 04:06:45.0
C# 多个oracle 数据库事务怎么处理???
我有三个oracle数据库,在不同的地方,需要操作这三个数据库。
我想写个事务操作,因为入一个数据库,其他二个库对应的其他表也要添加。
所以想写个一个事务,当某一个数据库操作失误,可能其他二个库就回滚。

------解决思路----------------------
把语句写到一个事物里面不行吗?
------解决思路----------------------
你这个要分布式事务嘛 类似sqlserver scope
------解决思路----------------------
这个问题不能用事物来处理

可以在数据库中建立连接来解决
A库中建立对B库的连接,然后在A库的相关表中使用触发器操作B库
------解决思路----------------------
从数据库或者架构层面考虑比较靠谱一些。
------解决思路----------------------
引用:
而且还有可能你的oracle,别人的是sql server  或者 sybase,有的库可以让你去直连。但是大多数又是web接口。
又不是单单一个 SQLTransaction、OracleTransaction类可以搞定的事情。

不是说多数据库的设计奇葩,而是说你想在客户端实现事务,这设计很奇葩
就算事务最终做出来了,也根本达不到你想要的效果
------解决思路----------------------
引用:
Quote: 引用:

从数据库或者架构层面考虑比较靠谱一些。

怎么去考虑啊,有没有相应的理论方面的文档等。


最简单地处理的话,你可以把(代码控制的)不同的数据库事务嵌套在一起,先确保执行“完毕”所有数据库表操作,然后一次性提交所有事务。由于这些提交“很接近、很短促”,基本上可以确保都会成功。
------解决思路----------------------
如果这些数据库“是你家自己的”,你可以这样考虑一下。但是从SOA的角度,这其实往往首先是性能杀手(不但拖垮了网络系统,也会拖垮数据库本地应用),其次是毫无安全性,而且也不利于进行系统扩展。

通常是从业务流程设计上去解决这种问题。

如果你只能从“技术上”去理解,那么就无法解决这类问题了。如果死抠技术,可能就设计不出更高效率的系统。
------解决思路----------------------
网上搜索 分布式事务,可实现多个数据库的事务控制,SQL Server亲测没有问题,ORACLE需要安装另外一个支持分布式事务的程序后通过Windows 服务也可以实现。
------解决思路----------------------
引用:
Quote: 引用:

从数据库或者架构层面考虑比较靠谱一些。

怎么去考虑啊,有没有相应的理论方面的文档等。

分布式事务可以考虑,服务端提供insert和delete两个服务,然后拼一个“大”的事务。
如果你的应用很简单,几个oracle都是自家的,是否可以考虑用dblink只操作一个库,其他几个都是“映射”过来的。
  相关解决方案