query wait是
@@lock_timeout的時間,
default為-1
(forever)remote query timeout和remote login timeout
是針對遠程的.
一個是查詢timeout時間
一個是登錄timeout時間.

解决方案 »

  1.   

    query wait 选项
    在 Microsoft® SQL Server™ 中,当没有足够的内存运行查询时,大量占用内存的查询(如那些涉及排序和哈希操作的查询)将排队等待。查询在一段时间之后将会超时,该时间或者由 SQL Server 计算(估计查询耗费时间的 25 倍),或者由查询等待选项设定的非负数值确定。query wait 选项可以设定一个查询在超时前等待所需资源的时间(以秒为单位,范围从 0 到2147483647)。如果使用默认值 –1 或指定 –1,则超时时间通过计算得到,是预计查询成本的 25 倍。 重要  包含等待查询的事务在查询等待内存时可以控制锁。在极个别的情况下,可能会发生无法检测到的死锁。减少查询等待时间可降低这类死锁的概率。最终,等待的查询将被终止并且事务锁将被释放。但是,增大等待时间将增大该类查询被终止的时间。不建议改变该选项。remote query timeout 选项
    使用 remote query timeout 选项指定在处理远程操作时,命令超时(Microsoft® SQL Server™ 认为命令已失败或查询执行的时间太长)前需等待的秒数。默认值为 600,表示允许等待十分钟。对于异类查询,remote query timeout 指定远程提供程序在查询超时前应等待的秒数(由命令对象使用 DBPROP_COMMANDTIMEOUT rowset 属性初始化)。如果远程提供程序支持该值,则该值还用于设置 DBPROP_GENERALTIMEOUT。这将导致任何其它操作在指定的秒数后超时。对于远程存储过程,remote query timeout 指定在发出一个远程"EXEC sp"之后,在远程存储过程超时前必须等待的秒数。该设置立即生效(无需停止并重新启动服务器)。remote login timeout 选项
    remote login timeout 选项用来指定远程登录失败返回前等待的秒数。例如,如果试图登录到一个远程服务器而该服务器已关闭,remote login timeout 确保您在计算机停止登录尝试前不必无限期地等待下去。remote login timeout 影响与 OLE DB 提供程序的连接,该程序是为异类查询而开发的。remote login timeout 的默认设置为 20 秒。0 值允许无限时等待。该设置立即生效(无需停止并重新启动服务器)。
      

  2.   

    谢谢竹之草和疑难杂症,但两位都是从理论角度解释,我想知道具体到我的程序,就是用ADODB.Connection.Execute插入大量数据时怎么不造成Timeout expired的现象!
      

  3.   

    够狠你就:cnn1.ConnectionTimeout = 0
    cnn1.Open
      
    无限长时间 
      

  4.   

    set objConn = server.createobject("adodb.connection")
    objConn.open dbconn
    objConn.CommandTimeout = 3000 (50分钟)注意:objConn.ConnectTimeout是连接超时,而objConn.CommandTimeout是执行sql语句的超时时间,设大点就行了.
      

  5.   

    我要的是设置SQL Server服务器而不改动程序而达到我的要求!