Delphi使用ADOConnection能否禁用或延长事务超时时间?
我正在开发一款版本比对工具,用于校验项目各分支是否都完成了所有重要变更。目前上传超大数据集时会出现超时问题,推测是数据库出于安全机制主动终止了事务,预估整个事务或请求的执行时长会超过2小时。
原有初始化代码如下:
procedure TRCForm.FormCreate(Sender: TObject); begin Database := TDatabase.Create(Self); // 此处需要禁用事务超时 end;
待解决问题:
- 问题1:是否可以延长事务的最长允许执行时长,或是直接完全禁用超时机制?
- 问题2:我还考虑会不会是事务存储的数据量过大,导致运行到某一节点就终止,这种情况是否存在?如果存在的话要怎么排查和规避?
注意:使用的数据库连接组件为ADOConnection。
解决方案
只需将CommandTimeout设置为0即可完全禁用所有类型的超时。
修改后代码:
procedure TRCForm.FormCreate(Sender: TObject); begin Database := TDatabase.Create(Self); Database.DBConnection.CommandTimeout := 0; end;
CommandTimeout用于指定命令执行的等待时长,超过该时长则判定命令执行失败。
内容的提问来源于stack exchange,提问作者Maik Hasler
相关产品推荐
相关产品推荐

