数据量太大的时候传输时间超出CommandTimeOut设顶的时间限制,可把CommandTimeOut设为0.建议只使用需要的数据,用SQL语句.
CommandTimeout 属性 (ADO)
         指示在终止尝试和产生错误之前执行命令期间需等待的时间。设置和返回值设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默认值为 30。说明使用 Connection 对象或 Command 上的 CommandTimeout 属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消 Execute 方法调用。如果在 CommandTimeout 属性中设置的时间间隔内没有完成命令执行,将产生错误,然后 ADO 将取消该命令。如果将该属性设置为零,ADO 将无限期等待直到命令执行完毕。请确保正在写入代码的提供者和数据源支持 CommandTimeout 功能。Connection 对象的 CommandTimeout 设置不会对相同 Connection 上 Command 对象的 CommandTimeout 设置产生影响,即 Command 对象的 CommandTimeout 属性不继承 Connection 对象的 CommandTimeout 的值。在 Connection 对象上,打开 Connection 后,CommandTimeout 属性将保持读/写。

解决方案 »

  1.   

    如果将该属性设置为零,ADO 将无限期等待直到命令执行完毕
    请问这样无限期的执行下去,是否就意味着死机呢?
      

  2.   

    如果将该属性设置为零,ADO 将无限期等待直到命令执行完毕
    请问这样无限期的执行下去,是否就意味着死机呢? 那你可以用异步查询。
      

  3.   

    blp(★★★) :异步查询,这个我不是很明白,包括理论上的,能麻烦你解释一下吗?
      

  4.   

    这是个经典问题了。我的解决方案如下:
    对text字段设置FullText Index(全文索引)
    查询时用Contains 谓词
    对其它段设置分级索引,(建分级索引表(即分类,再分子类))
    查询时先查询分级索引表,先获取相关记录ID
    然后再在记录中作最终查询!由此,上万条记录通常是1至2秒完成!
      

  5.   

    看你SQL语句的写法和表的结构 ,CommandTimeOut设为30秒比如select * 和 select a,b 两个字段速度就不一样
    有索引和无索引时速度也不一样,还有就是你数据库的设计只要你能够利用主键和索引,上万条记录应该没问题Good Luck!!!!!!!!
      

  6.   

    http://www.csdn.net/expert/topic/447/447953.shtm