关于使用TransactionScope进行数据更新的问题

joker828 2007-07-13 09:32:01
近来在xp上面用.net2005进行开发,其中对数据库(oracle10g)的更新部分用到了TransactionScope来进行事务的处理。其中一本程序是这样的,在一个TransactionScope内,进行了大量的插入处理(循环插入数据,数据量比较大,sql很简单),大约25分钟以后,循环插入处理完毕,此时仍在同一个TransactionScope内进行下个一个数据库查询操作的时候,出现异常错误,错误信息为 ORA-24761: transaction rolled back。
这个错误非常奇怪,当数据量小的时候,数据插入处理所需要时间不长,插入和后面的查询等操作完全没有问题,但是一旦当数据量大,数据插入所需要时间较长的时候,就会出现上面所说的问题。个人感觉是环境设定的问题,请有经验者指点一二。
...全文
989 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamsflying 2007-09-16
  • 打赏
  • 举报
回复
兄弟,你这个问题我也遇到过,搞了人两天才搞好,最后的结果是我放弃了现有的TransactionScope,重写了一个,我估计这个是微软没有测试的原因。升级了之后应该就好了。
详细请见:http://dreamstec.cnblogs.com
Michael_Jackson 2007-07-23
  • 打赏
  • 举报
回复
当您尝试在分布式环境使用 Microsoft Transaction Server (MTS) 使用 Oramts.dll 文件。 SQLServer.NETFramework 数据提供程序用于 Oracle ( System.Data.OracleClient ) 通过 Oramts.dll 文件调用应用程序编程接口 (API) 公开公开。 Oramts.dll 文件仅可用于 Oracle 客户端连接性软件。 明确要在您计算机, 安装它您必须在安装的 Oracle 客户端连接性软件选择 Oracle Services for MicrosoftTransactionServer 组件。

与 Oracle 客户端连接性组件安装 Oramts.dll 文件。 它不与任何 Microsoft 软件分发。 安装 Oracle 客户端连接性软件时 Oramts.dll 文件是不包含作为默认安装。 要安装此组件必须单击以安装 Oracle 客户端连接性软件时选中 Oracle Services for Microsoft Transaction Server 复选框。 有关这些组件, 请访问 OracleWeb 站点:
http://www.oracle.com/technology/tech/windows/ora_mts/index.html
joker828 2007-07-17
  • 打赏
  • 举报
回复
看来不是我一个人遇到这个问题啊,我也查了很多资料。关于TransactionScope确实是这样用的,但是资料中都没有提到过这个问题,确实很麻烦阿。
lovefootball 2007-07-13
  • 打赏
  • 举报
回复
我也遇到这个问题
看了N天资料也没查到原因
后来还是老老实实的写了BEGIN ,COMMIT,rollback
joker828 2007-07-13
  • 打赏
  • 举报
回复
经过测试,如果使用普通的数据处理方法(BEGIN TRANSACTION,COMMIT)来进行数据得更新处理,数据量大也不会有问题,但是现在使用了TransactionScope会出现大数据量,处理时间长的时候会发生问题。我想可能是因为使用到了ORAMTS.DLL所造成的问题,但是还没有找到原因和解决的方法。
请经验者指点一二。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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