(转载)使用ADOConnet.BeginTrans后,出现错误提示:无法在此会话中启动更多的事务?
Q:
三层结构,在服务器端使用adoconnection连接到sqlserver2000,然后想在
datasetprovider的beforupdaterecord中使用语句:
try
adoconnection.begintrans; //这一句出错,错误信息如下
....
adoconnection.committrans;
except
....
end
错误信息如下:
无法在此会话中启动更多的事务
我在启用adoconnection.begintrans前判断adoconnection.InTransaction是false,
为什么会出现这个错误?
A:
只有一种情况会发生搂主的这种现象,即在一个事务未完成时,又启用了另一个事务。即在代码连接时有出现:
adoconnection.begintrans;
....
adoconnection.begintrans;
....
这种情况下,会发生报错。所以要保证begintrans和committrans或rollbacktrans成对出现,尤其是在try语句中。
A:DSP 在更新数据时会自动启动事务?!
A:
首先你的数据库不支持嵌套事务!
其次,在单事务情况下:
try
ADOConnection.BeginTrans;
....
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
end;
必须成套出现。
最后,可以在开始事务前调用ADOConnection1.InTransaction来判断
A:
楼上的“你的数据库不支持嵌套事务“,我不同意这样的说法,SQL Server和Oracle中都是支持嵌套事务的,但在Delphi应用中同样会出现这样的报错,其根本原因并不是数据库引起的,而是在于Delphi本身。只能说Delphi不支持事务嵌套。
在Delphi中使用事务机制不如在应用服务器端使用好,搂主可以将SQL部分改为存储过程以事务实现会来的简洁而高效。
A:
3楼比较靠谱。
数据库本身支持嵌套事务可数据访问引擎没实现此功能,等于还是没有。
把业务逻辑在APPSERVER的代码和DATASERVER的SP,VIEW中散布,升级及维护会很麻烦。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
A:
程序不用编写嵌套事务,编程方式的问题
A:
那是因为你的上一次事务没有回滚!!!
A:
datasetprovider本身自带事务功能了........
A:
因为在分布式的远程数据摸板的创建时,是系统默认的方式:为每个客户开启一个独立的线程都共享一个数据连接,所以此时要是有两个或两个以上的客户线程同时启动事务,应用层就会出现“无法在此会话中启动更多的事务”的错误,而客户端会出现:“不能手工或自动在分布式下创建新的连接”
A:
如果是datasetprovider本身自带事务功能,那么怎样将这个事备用起来,或者将它屏蔽掉呢。
其实我在这几天的测试过程中,发现datasetprovider确实自带事务功能了
A:
应该转换思路了。
我找到解决的办法了。
ADOConnection.BeginTrans;在beforeapplyupdate中使用
ADOConnection.CommitTrans;在afterapplyupdate
ADOConnection.RollbackTrans;在applyupdateerr发生错误中使用
(转载)使用ADOConnet.BeginTrans后,出现错误提示:无法在此会话中启动更多的事务?的更多相关文章
- PowerDesigner成功生成PDM进行check model后的错误提示解决途径
1.existence of reference join------->缺少主键; 2.constraint name uniquesness-------->关联约束重名(refere ...
- qq2440启动linux后出现错误提示request_module: runaway loop modprobe binfmt-464c
1.情景: 编译busybox时加了make CROSS_COMPILE=arm-linux-,但是还是出现了此情况! 2.解决方案如下: 配置busybox时,在配置中发现busybox setti ...
- 纯手动拉WebPanel页面保存出现错误提示 "error:字符文本中的字符太多"
环境为.Net 没有使用WorkWithPlus 纯手拉WebFrom页面 问题出现情况如下:在拉页面的过程中拖了3个Value类型的变量到Table中 页面如下 但是在我保存的时候 发现提示如下错 ...
- [摘抄]VC6.0移植到VS2008(vs2005)后的错误总结(未全部验证)
============================================================================================= 201405 ...
- 设置jQuery validate插件错误提示位置
参照上一篇bootstrap布局注册表单 使用校验插件默认位置显示提示信息,发现错误提示信息换行了,由于增加了提示信息,表单显示高度也增加了,如下 默认提示信息位置代码为 将错误提示设置其显示在右边, ...
- 导入Maven项目后,Eclipse提示“Missing artifact ”类的错误
导入Maven项目后,Eclipse提示“Missing artifact ”类的错误 标签: Maven Missing art 2016-08-15 16:05 679人阅读 评论(0) 收藏 举 ...
- 解决VM安装VMTools后错误提示,实现文件共享
在VM里给Red Hat 9.0安装VMTools后重启,在系统启动过程中出现三处提示,分别为:第一处:Mounting local filesystem: Error: Cannot mount f ...
- Halcon的应用程序 打开后 弹出没有帮助文件错误提示
问题: Halcon的应用程序 打开后 弹出没有帮助文件错误提示 解决方法: 建立(C:\ProgramFiles\MVTec\halcon)目录,将halcon安装目录下的help文件夹复制过来即可 ...
- SVN 安装后右键出现点击鼠标右键弹出错误提示:CrashHandler initialization error
SVN 安装后右键出现点击鼠标右键弹出错误提示:CrashHandler initialization error 原因是目标文件夹中缺少SendRpt.exe文件 解决方案:找svn是好的的同事将b ...
随机推荐
- oracle之单行函数
单行函数 ①.字符函数 LOWER(x):将x中的每一个单词都转换成小写 UPPER(x):将x中的每一个单词都转换成大写 INITCAP(x): 将x中的每一个单词的首字母转换成大写 CONC ...
- php实用函数整理
1. 排序:array_multisort 可以对多位数组的多个字段进行排序 例子1如下: //自定义数组排序--按转发数从高到低排序 function sortSelfRc($oneLayer){ ...
- Mysql性能调优
在MYSQL命令行客户端添加 \G 语句终止符可以让返回的结果集垂直显示. 一.查找运行缓慢的 SQL语句 :show full processlist ; 二.生成一个查询执行计划(Query Ex ...
- Mantis 安装与配置
1. 适用范围 a. 本文介绍基于 Windows 下的缺陷管理平台 Mantis. 2. 软件准备 a. 下载 EasyPHP:http://www.easyphp.org/easyphp-devs ...
- iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)
自定义UITabBar替换系统默认的,目的是为了在UITabBar中间位置添加一个“+号按钮”,下面我们来聊聊具体的实现. 1.自定义WBTabBar,让其继承自UITabBar,代码如下: // / ...
- linux内核结构
Linux内核子系统: 分别是:进程调度(SCHED).进程间通信(IPC).虚拟文件系统(VFS).内存管理(MM).网络通信(NET) 进程调度与内存管理之间的关系:这两个子系统互相依赖.在多道程 ...
- UNIX V6内核源码剖析——unix v6 全貌
1. UNIX V6 运行硬件环境——PDP-11/40 PDP-11/40指令和数据都是以16比特为单位.对它而言,一个字的宽度为16比特. PDP-11/40以及周边设备的寄存器被映射到内存最高位 ...
- Matlab plotyy函数的使用及问题总结
MATLAB函数,用来绘制双纵坐标图. 调用格式: 1.plotyy(X1,Y1,X2,Y2):以左.右不同纵轴绘制X1-Y1.X2-Y2两条曲线. 2.plotyy(X1,Y1,X2,Y2,FUN1 ...
- uiatuomator如何调试
博主较笨,在使用junit 和uiatuomator结合时不知道怎么调试,因为uiatuomator一直是push在手机上,而junit是需要代码运行的,那我该怎么办,现在发一下不知道是哪位大神写的代 ...
- PHPBB 学习
Fixing incorrect cookie settings 设置PHPBB的cookie