关于分布式事务疑问!求高手解疑!!

问题描述

问题一、我要同时操作2个以上数据库中的表,要求用事务保证它的完整性。这时我有两种选择,一是用分布式事务。二事我针对每一个库建立一个SqlTransaction的事务去操作,然后在所有操作都成功的前提下把每个一库的SqlTransaction一起进行提交。因为我看了网上很多文章说.net分布式事务性能效率方面不够可靠,所以不知道那一种方法更为可行!!效率更高!问题二、TransactionOptionsto=newTransactionOptions();to.IsolationLevel=System.Transactions.IsolationLevel.RepeatableRead;to.Timeout=TimeSpan.FromMinutes(2.00);using(TransactionScopets=newTransactionScope(TransactionScopeOption.Required,to,EnterpriseServicesInteropOption.Full)){......(事务SQL操作内容)ts.Complete();}这是我现在项目用的分布式事务的写法。在using{}里面所有sql操作都会在事务范围以内,但我现在有一个需求是我把所有事务写好后必须在一个非事务的sql操作请求执行成功后此事务才能进行提交,如果失败则进行回滚。而我把这个SQL操作放在using里他又会在此事务的范围之内,如果我把它放在using结束后面我又不能根据返回值来对事务的提交和回滚进行操作!求高手解决一下!!谢谢!!!

解决方案

解决方案二:
传说中的高手呢????!!!!!出来帮帮忙呀。。。
解决方案三:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
解决方案四:
问题一:你的多个数据库要保持各自完整还是怎么样?各自完整的话针对每个数据库开一个事务就好了喽。否则的话要分布式事务的。引用

二事我针对每一个库建立一个SqlTransaction的事务去操作,然后在所有操作都成功的前提下把每个一库的SqlTransaction一起进行提交。

你这个怎么实现??try{//transaction1...trans1.commit();trans2.commit();}catch(......)......commit语句都写在try里面的吧,你怎么知道都成功
解决方案五:
来个权威点的回答吧!!!高手呀!!
解决方案六:
请楼主先分析一下你为什么要用分布式事务....既然你用了分布式事务,又为什么硬给它添加一个非事务的操作进去????还有如果最后一个非事务sql操作跟之前事务没有键值的关联,是否可以考虑先执行非事务sql操作,再进行事务操作...
解决方案七:
5楼:我现在有个业务逻辑是这样。在一个商品购买的逻辑中。我得先减掉供货商的库存,然后写入相关的购物单据资金交易记录等操作。最后我要扣除购买方的帐户余额及加上销售方的金额。现在的问题是最后的扣款是一个接口类型的操作,就有点像我通过一个接口去请求像淘宝这样的第三方做帐户资金的相关操作。当后回成功则提交前面的事务操作,如果失败则回滚。因为我们现在开发的一个系统包含商家的产品库存等信息,资金相关操作是另一个第三方已经成形的系统,所以资金必须要通过接口去操作。而我也不能先去做资金操作的接口,这样如果资金操作成功,而我后面的库存等情况操作失败那资金是没有办法回滚的
解决方案八:
如果最后一个非事务sql操作跟之前事务没有键值的关联,是否可以考虑先执行非事务sql操作,再进行事务操作...
解决方案九:
//这里定义一个返回值intreturnValue=0;TransactionOptionsto=newTransactionOptions();to.IsolationLevel=System.Transactions.IsolationLevel.RepeatableRead;to.Timeout=TimeSpan.FromMinutes(2.00);using(TransactionScopets=newTransactionScope(TransactionScopeOption.Required,to,EnterpriseServicesInteropOption.Full))try{using(SqlConnectionconnection1=newSqlConnection(connectString1)){try{//这里是操作供货商的库存的代码块returnValue=操作供货商的库存的返回值;using(SqlConnectionconnection2=newSqlConnection(connectString2))try{//这里写入相关的购物单据资金交易记录操作returnValue=操作返回值;}catch(Exceptionex){//失败,异常}}catch(Exceptionex){//失败,异常}}ts.Complete();}if(returnValue>0){//这里假如你有执行扣款的方法是Money();成功返回1,失败返回0;if(Money()>1){事务进行提交}else{事务进行rolledback}}else{事务进行rolledback}

你试一下这种方式,主要我不清楚你的业务
解决方案十:
关注+学习!!!帮你顶!!!

时间: 2025-01-31 06:06:05

关于分布式事务疑问!求高手解疑!!的相关文章

分布式事务问题求指点

问题描述 在做一个分布式事务的项目,在调用webservice,服务器端操作了几次的数据库访问,第一次SqlConnection打开,然后关闭,接着第二次打开SqlConnection就出现请问是怎么回事呢?感谢各位大侠! 解决方案 解决方案二:你是怎么实现分布式的?另外,你提示上面错误的代码,是一个方法体?解决方案三:引用1楼lovelj2012的回复: 你是怎么实现分布式的?另外,你提示上面错误的代码,是一个方法体? 你好,我webservice是这样的[WebMethod(Transact

分布式事务系列(开篇)提出疑问和研究过程

1 前言 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 对于我们这种初学者,可能会使用spring带给我们的@Transactional,

内存表-求高手解答,ORACLE 12C 中新加功能InMemory疑问

问题描述 求高手解答,ORACLE 12C 中新加功能InMemory疑问 在SQLPLUS中设置完一些表为InMemory之后,后面进行维护时,有没有方法可以获取到哪些表为InMemory表 我测试重复设置InMemory和no InMemory,SQLPLUS中也不会有错误信息 SQL> alter table test no inmemory; Table altered. SQL> alter table test no inmemory; Table altered. SQL>

分布式事务系列(3.2)jotm分布式事务源码分析

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 了解xapool 我们在前一篇文章中了解到jotm配合xapool共同完成了分布式事

分布式事务系列(1.2)Spring的事务体系

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 三种事务模型 三种事务模型如下: 本地事务模型 编程式事务模型 声明式事务模型 先来

分布式事务云市场分析

背景 全局事务服务GTS上个月开始在阿里云上公测,之前我们也发表了一篇「破解世界性技术难题!GTS让分布式事务简单高效」的文章,引起了业界广泛关注,接受了大量的咨询,故希望通过本文让大家对GTS有更深入的理解. GTS在目前在阿里内外部已经有较大规模的应用,有100多个用户,其中专有云大用户就有10多个,预计今年将有更大规模的市场需求爆发. 用户诉求是什么 分布式事务解决的用户最本质诉求是什么?数据一致. 大中企业有一个共同的诉求是数据一致,几乎覆盖到各个行业. 比如说零售行业,库存与出货的数据

MQ XA JAVA 开发的问题 跪求高手

问题描述 小弟准备用JAVA和MQ6.0实现XA的分布式事务,但是在使用的过程中,发现了一个问题,已经困扰我很久了!我的MQ6.0和Oracle客户端安装在同一台机器上,ORACLESEVER在其他机器上.看IBM的手册说,XA需要ORACLE客户端.安装IBM的说明我生成了oraswit.mq.ini也进行了配置,其中XAOpenString的DB我配置的是ORACLE客户端连接的名字.但是在调用begin方法的时候发生异常,连接不到DB,log的信息是ORACLE客户端本地的数据库,MQ没有

分布式事务系列(2.1)分布式事务的概念

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 X/Open DTP DTP全称是Distributed Transaction P

分布式事务系列(4.1)Atomikos的分布式案例

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 Atomikos使用非XA数据库驱动实现分布式事务 项目地址见:Atomikos使用