SQL Server 错误 '80040e31' 查询超时已过期
Session.TimeOut的最大取值是1440,超出会报错,应直接修改ASP脚本config.asp设置 Session.TimeOut的取值以分钟为单位,最大取值是1440分钟,也就是24个小时,如果给它赋一个更大的值
例如1441,那么会产生“运行时错误”,报错信息类似下面: SessionID 错误 'ASP 0164 : 80004005' 超时值无效 /manage_content/检查输入的管理员名称和密码.asp,行 109 指定的超时值无效。
Connection Timeout和Command Timeout
每次对数据库连接时,我们有时候会碰到连接超时或者命令超时,这两个超时是不一样的。以ADO.NET为例,当客户端和服务器端连接时,碰到的超时情况主要有下面几种:
当从连接池获取一个连接时,碰到超时。
当建立一个全新连接(而不是从连接池获取)时,碰到超时。
当发送一个命令(command)到SQL Server时,超时。
当发送命令(连接字符串带有“context connection=true”属性)到SQL Server时,超时。
当不是显示的发送一个命令(implicitly)到SQL Server时,碰到超时。
当执行异步命令时,(BeginExecute)碰到超时。
当从服务器端,获取行时,碰到超时。
当用Bulk copy方式,上传数据时,碰到超时。
这些超时主要是通过连接字符串中的Connect Timeout和SqlCommand.CommandTimeout来进行控制。前面两种是登录超时由Connection Timeout来决定什么时候超时,后面几种是命令超时由Command Timeout来决定什么时候超时。
SqlConnection.ConnectionTimeout : 1. 说明: 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。 2. 默认值:等待连接打开的时间(以秒为单位)。默认值为 15 秒。 3. 备注:值 0 指示无限制 4. 只读
SqlCommand.CommandTimeout 1. 说明:获取或设置在终止执行命令的尝试并生成错误之前的等待时间。 2. 默认值:等待命令执行的时间(以秒为单位)。默认为 30 秒。 3. 备注:值 0 指示无限制,在 CommandTimeout 中应避免值 0,否则会无限期地等待执行命令。 4. 可读可写
特别注意: 超时时间已到。在操作完成之前超时时间已过或服务器未响应 类似这种错误,一般是 SqlCommand.CommandTimeout 或者 SqlBulkCopy.BulkCopyTimeout 的时间超时, 而不是 SqlConnection.ConnectionTimeout。
注册表中的键值:
SendReceiveTimeoutInSec
LocalServerTimeoutInSec
InternetServerTimeoutInSec
InternetServerTimeoutInSec
TcpDisconnectTimeout
CommitTimeOut
CommitTimeOutSeconds
LimitQueryTimeOut
SQLLoginTimeout
SQLQueryTimeout
AutosReturnValsTimeout
|