查询数据库时候偶尔出现提示错误:'数据提供程序或其他服务返回E_Fail状态'
然后在SQl2000中执行sql语句,select * from AAA Order by BBB 出现下面错误提示
 '[Micorsoft][ODBC SQL Server Driver]超时已过期'.
另外,数据库是sql2000+sp4,客户段查询和服务器不是一个网段.但是通过路由设置,可以正常访问.delphi 查询语句:
     StrSql:='select * from AAA Order by BBB';
    self.adoQuery1.SQL.Clear;
    self.adoQuery1.SQL.Add(StrSql);
    self.adoQuery1.Active := true;还有就是ado链接数据据的代码,连接数据库是正常的,打开表也是正常的,但是用一段时间,客户就反馈
出现以上的现象,我真不知道怎么回事!请大家帮忙.谢谢了,比较着急.......

解决方案 »

  1.   

    看下你的adoconnection的超时设置是多少?
      

  2.   

    adoconnection的超时设置是30,我感觉和这个关系不是很大
      

  3.   

    主要是看 commandtimeout 设成0就没超时限制了。
      

  4.   

    我们公司 ERP有时也是那样的情况
    1:你的客户的网速太慢,
    2:在线客户平分资源厉害,查询比较大的数据,导致其它用户不能正常使用
    3:不知道你的客户有的什么数据库,我们公司以前是SQL2000,现在是SQL2005,另外加了CUP+内存才有缓解那样的情况
      

  5.   

    SQL2000,他们和服务器还不是一个网段.那怎样解决啊
      

  6.   

    4:只要找一下在哪个界面的时候出现那样的情况,看有没有调用存储过程或关联哪个表有没有建立索引,是否是是建立索引不挡或存储过程因数据过大而出现时间过程的情况,而如上面所说,有时间限制,(adoconnection的超时设置是30,我感觉和这个关系不是很大)
      

  7.   

    ‘SQL2000,他们和服务器还不是一个网段.那怎样解决啊’
    按你说的,大部分都是因为网络问题引起的,看一下是网络局域,还是其它,主要是网络设备引起,/哈哈,要客户改善网络可能性不大
    2:要优化你的SQL了,//主要在这里解决问题
      

  8.   

    把所有的timeout=0就可以了.
    http://www.tryting.com
      

  9.   

    和网络关系不大,软件方面主要是表以及SQL语句的问题,优化你的SQL语句,表中建立索引;硬件主要就是加内存。
      

  10.   

    把所有的timeout=0就可以了.
    这样会不会很占用资源?
      

  11.   

    只要找一下在哪个界面的时候出现那样的情况,看有没有调用存储过程或关联哪个表有没有建立索引,是否是是建立索引不挡或存储过程因数据过大而出现时间过程的情况,而如上面所说,有时间限制,(adoconnection的超时设置是30,我感觉和这个关系不是很大)
      

  12.   

    我们这里开始也是'select   *   from   AAA   Order   by   BBB '; 
    这样写的,后来被我改成SELCT 字段,感觉也没多大效果
      

  13.   

    除了上面adoconnection的超时设置以外,我还碰见过超过服务器的连接,windows拒绝多余的连接,确认windows的客户端认证是不是够大,不够可以增加的,默认是5个,如果是prefession的操作系统只有5个连接
      

  14.   

    问题解决了,是我在另外的程序里面执行了delete 操作,同时再执行这个程序的select时候就出了问题.