在程序中调用就出现"超时并过期"的错误(100分)

  • 主题发起人 主题发起人 flysand
  • 开始时间 开始时间
F

flysand

Unregistered / Unconfirmed
GUEST, unregistred user!

一个存储过程,不管理数据有多少,在查询分析器中都能完成,
但在我的程序中调用就出现"超时并过期"的错误
(如果数据量少没事,但运行时间超过5分钟左右就出现以上错误)
SQL2000都是用默认设置

连接数据库如下:
adoconnection--adoquery--datasetprovider--dcomconnetion--clientdataset
clientdataset.close;
clientdataset.commandtext:='exec myproc';
clientdataset.open;

我应如何处理?
 
没人知道吗,还早呢
 
adoconnection有超时设置
 
adoconnection.commandtimeount:=300
adoconnection.connectiontimeout:=150
还是出错
 
要五分钟,你的存贮过程该简化了吧.我想里面肯定有不少的拉圾.
 
从二十万条记录(主从库)中查找一万条记录,并一条条进处理
查找约用2.5钟分,处理约用用1.5分钟.(duron650 196M)
我想我的存贮过程没问题!
大家还是帮我想一想解决办法吧!
 
这是 TADOStoredProc 的错,和 TAdoQuery 一样
TADOStoredProc 和 TAdoQuery 都是从TCustomADODataSet继承的
TCustomADODataSet 有一个CommandTimeout属性但没有公布出来 默认值是30″

你的问题解决办法有两种
1 重新继承 TAdoQuery 并公布 CommandTimeout 属性
然后在程序里把这个属性的值设置的大一点就可以了。
2 直接修改 Adodb.pas 中的 TAdoQuery 类
TAdoQuery = class(TCustomADODataSet)
published
...
...
//在这里加入如下代码
property CommandTimeout ;
end;
把AdoDb单元加入一个新的工程里并编译
然后在你的程序里设置
AdoQuery1.commandTimeout := 300;//够大的了吧
再执行你的程序就不会出错了

TADOStoredProc 的处理同上


 
呵呵,
老问题了,
把ADOQuery换成ADOCommand控件,
把ADOCommand的TimeOut设置成0
把ADOQuery.sql.text中的语句加入到ADOCommand.CommandText
我们以前的公司就是这样解决的
 
多人接受答案了。
 
后退
顶部