楼主的问题就在于更改数据的时间太长。如果你设置的TIMEOUT过短的话,会提出已经超时。
如果两个人同时修改的话,问题就更严重了。至于你说为什么后来就快了。因为SQL里有缓存的。会把相关执行计划和语句保存在缓存里。
再执行的时候不会再从头分析了。

解决方案 »

  1.   

    超时: 把ADO的相关的timeout属性设为0。
    快  : 因为缓存了数据和执行计划。
      

  2.   

    關于超時樓主可以試試設置TimeOut屬性值,如果設置為0則代表不限制。至時第一次執行的時候慢,后來執行就快,那是因為第一次SQLSERVER會生成執行計劃,將執行計劃保存在緩存中,當下次再進行此操作時將直接使用緩存中的執行計劃,無需再進行分析生成執行計劃。
      

  3.   

    那有什么办法避免,好像没过几天,又会出现这种情况(服务器没有重启),程序修改数据又变得很慢,又需要在SQL的企业管理器里修改一条数据,之后又一切正常了.
      

  4.   

    1.由于数据库设计问题造成SQL数据库新增数据时超时  症状:
      Microsoft OLE DB Provider for SQL Server 错误 '80040e31' ([ODBC SQL Server Driver]超时已过期);
      服务器上看CPU、内存占用率很低;
      事件日志中提示: 数据库 '*********' 中文件 '***********' 的自动增长在 453 毫秒后已取消或出现超时。使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。
      原因:
      数据库设置时,[文件增长]按百分比来增长,当数据库文件很大时(1G以上),新增操作都会报超时,而这时候其实CPU、内存占用率都非常非常的低。 
      解决方法:
      把上述的文件增长这里设置为一个更低的百分比或者直接指定增加多少兆字节。2.SQL Server数据库超时设置  修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒。  企业管理器中的设置:  A、在企业管理器中,选择菜单上的"工具",再选择"选项";
      B、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;
      C、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 30。 查询分析器中的设置:  单击“工具”->"选项"->"连接"; 将登录超时设置为一个较大的数字,连接超时改为0。 3.查询语句时超时    原因分析:    查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法。  
        另外,数据库的查询超时设置一般是sqlserver自己维护的(在你没有修改query  wait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。
        而造成超出估计值那么多的原因有两种可能:
        一是估计时间不准确;
        二是sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。      解决办法:
        A.优化语句,创建\使用合适的索引;
        B.解决第一个问题的方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE  STATISTICS  表名;
        C.增加内存      如果想手动设置查询超时,可以使用以下语句:  
        sp_configure  'show  advanced  options',  1  
        GO  
        RECONFIGURE  
        GO  
        sp_configure  'query  wait',  2147483647  
        GO  
        RECONFIGURE  
        GO  
      

  5.   

    那有什么办法避免,好像没过几天,又会出现这种情况(服务器没有重启), 程序修改数据又变得很慢,又需要在SQL的企业管理器里修改一条数据,之后又一切正常了.
      

  6.   

    對語句進行優化.
    再把ADO的超時時間設為0.
      

  7.   


    问题是在程序里就一条 单表操作 的Update 语句都超时,该表没有任何约束,任何触发器,任何表关系啊,,怎么优化?
    现在需要找出原因,要客户修改一条记录都要等1分多钟也不好吧~