timeout时间设置无效
我在用VBA连接MSSQL 2005的时候,代码如下,timeout = 0标识为永不超时
- VB code
'连接数据库Public Function GetConnection() As ADODB.Connection Dim con As ADODB.Connection 'ADO连接 Set con = New ADODB.Connection con.ConnectionString = "Provider=SQLOLEDB;Server=lws-db;Initial Catalog=PL2010_back;User Id=pl;PASSWORD=pluser;timeout= 0" Set GetConnection = conEnd Function
但是我做了一个测试,用此连接来连接一个存储过程,当我在存储过程中使用
- SQL code
waitfor delay '00:00:31'--等待31秒
时,前台显示超时,但在存储过程中使用
- SQL code
waitfor delay '00:00:30'--等待30秒
时,不超时。30秒应该是连接的默认最大时间,从效果上看,我将timeout = 0设置为永不超时是无效的。
这是为什么呢?
[解决办法]
- XML code
timeout =60
[解决办法]
- SQL code
--手动设置查询超时,可以使用以下语句: sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'query wait', 2147483647 GO RECONFIGURE GO
[解决办法]
[解决办法]
SqlCommand.CommandTimeout
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
等待命令执行的时间(以秒为单位)。默认为 30 秒。
SqlConnection.ConnectionTimeout
获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
等待连接打开的时间(以秒为单位)。默认值为 15 秒。
[解决办法]
程序里面
- VB code
Set Conn = Server.CreateObject("ADODB.Connection")DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"Conn. Properties("Connect Timeout") = 15 '以秒为单位Conn.open DSNtest