日期:2014-05-18  浏览次数:20712 次

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 = con
End 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

------解决方案--------------------
探讨
引用:
XML code
timeout =60

无论将timeout设置成多少都没有用,设置为15数据也可以查询出来,貌似此连接只认默认值。
是不是在数据库方面还应该有什么设置呢?

------解决方案--------------------
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