Asp.net Oracle 事务出现奇怪的自动提交现象及解决办法
来源:互联网 发布:免费领取 q币 软件 编辑:程序博客网 时间:2024/06/04 18:12
前几天在项目中测试人员告诉我,我的程式中有关oracle transaction的事务控制有问题,在程式执行过程中,即使回滚了数据还是能写到数据库,当时我检查了程式,可是奇怪的是我的事务控制都有ROBACK,COMMIT。于是我自己又测试了一次,惊奇的事情发生了,我发现每当从新打开项目,第一次调试时,transaction能正常回滚,可是再运行一次就有问题,后面的测试不用提交数据就写进去了。大致是这样的步骤:
step a: new oracleconnectionA,then open(strConn)
step b: oracleconnectionA.begintransaction()
step c: todo some insert,update
step d: if c successful then commit,else rolback
step e: close oracleconnectionA
结果第一次运行,设置断点在c,刚运行完c发现数据没写进去,至到运行完e,数据才写进去,这第一次是正确的,紧接着再做同样的运行,刚运行完c,还没执行d,去数据库中查询就发现数据已经写进去了。
我还在一段程式中写了两段transaction控制进行测试,如下步骤:
step a: new oracleconnectionA,then open(strConn)
step b: oracleconnectionA.begintransaction()
step c: todo some insert,update
step d: if c successful then commit,else rolback
step e: close oracleconnectionA
step f: new oracleconnectionB,then open(strConn)
step g: oracleconnectionB.begintransaction()
step h: todo some insert,update
step i: if c successful then commit,else rolback
step j: close oracleconnectionA
结果发现第一次运行时a-e的过程,事务还是正常的,但一执行完h,还未执行i,本来要在i提交的数据就已经写进数据库了。在我进过很多次的修改,调试,修改,调试,查资料。。。请了很多人看,结果还是没发现问题。当时我还只是认为自己程式有问题,结果发现我们项目中所有的程式都有这种情况,因此还怀疑过DB有问题,但当我放在别人机器上测试时,却没出现问题,在我们的机器上运行别人的数据库和程式还是出现问题。因此将DB,程式的问题都排除了。目前的状况是我们团队的机器上测试都有问题,那么我不得不怀疑我们机器的oracle client是否有问题。结果还是不能解决。最后我想到是不是系统有问题了,还原系统后发现程式运行正常了,于是我们比对系统差异。终于让我发现导致该问题的原因是系统中一个漏洞导致的,http://support.microsoft.com/kb/958481
http://support.microsoft.com/kb/958483
http://support.microsoft.com/kb/958484
以上三个补丁能解决该问题,上述三个地址对该漏洞导致的异常做出了描述。其中就有这样的描述
这恰好是我遭遇的现象,终于给解决了。
一般安装KB958481这个补丁就可以解决问题,不过建议大家最好把这些补丁都打上,都是针对.net framwork的漏洞出的
- Asp.net Oracle 事务出现奇怪的自动提交现象及解决办法
- ASP.NET 2.0的一个奇怪现象~~
- asp.net一些奇怪问题现象及解决(1)
- asp.net一些奇怪问题现象及解决
- 如何解释这个ASP.NET的IsClientConnected奇怪的现象?
- Oracle执行出现正在提交的原因及解决办法
- 一个奇怪的asp.net回车键提交问题
- 发现ASP的一个奇怪现象
- ASP.NET 多次提交的解决办法
- 关于Oracle日期转换的一点小经验:运用union的一种奇怪现象及解决
- asp.net 程序自动提交登陆表单Session及Cookie
- C#两个日期控件的比较,出现奇怪的现象
- Redhat中制作RPM包出现的奇怪现象
- Oracle在Windows系统中出现的ORA-27100: shared memory realm already exists 的奇怪现象
- Oracle在Windows系统中出现的ORA-27100: shared memory realm already exists 的奇怪现象
- 求救!!!奇怪的现象!
- 奇怪的现象
- noskipws()的奇怪现象!
- 'CREATE PROCEDURE' 必须是批查询中的第一条语 之解决方案
- 如何使用DLL函数动态加载-静态加载
- OpenGL图形代码封装记
- QC中如何设置可见字段
- MyEclipse中webBrowser历史记录清除
- Asp.net Oracle 事务出现奇怪的自动提交现象及解决办法
- SQL Server和Oracle的常用数学函数对比
- C#跨线程访问WinForm控件
- oracle常用数据库函数
- uml五类图
- 真・恋姫†無双 真恋姬无双 菜鸟用教程+完全攻略
- 简单工厂/工厂方法/抽象工厂
- java调用jruby获取网页内容(JDK1.5)
- boost bgl dijkstra算法