use*_*048 1 sql vb6 timeout database-connection ado
我的任务是支持旧的VB6应用程序.(对我来说)我遇到ADO连接超时属性问题.如果服务器存在,下面的方法可以正常工作,但如果服务器不存在或网络连接没有启动,即使intTimeout设置为1,也需要整整30秒才能超时.
有没有办法让ADO更快地无法连接?这甚至可能吗?谢谢!
Public Sub GetConnectionObject(ByRef oCn As ADODB.Connection, strServer As String, strInitialCatalog As String, Optional intTimeout = 10)
Dim strConnectionString As String
strConnectionString = "Data Source=[SERVER];Provider=SQLOLEDB.1;User ID=ScanReq1;Password=ScanR3Q;Initial Catalog=[INITIALCATALOG];ConnectionTimeout=" & intTimeout & ";"
strConnectionString = Replace(strConnectionString, "[SERVER]", strServer)
strConnectionString = Replace(strConnectionString, "[INITIALCATALOG]", strInitialCatalog)
Set oCn = New ADODB.Connection
oCn.CursorLocation = adUseClient
oCn.ConnectionString = strConnectionString
oCn.CommandTimeout = intTimeout
oCn.ConnectionTimeout = intTimeout
oCn.Open
End Sub
Run Code Online (Sandbox Code Playgroud)
在建立TCP连接后,ConnectionTimeout启动.如果找不到服务器,则此值由Windows TCP子系统控制.
如果这对你来说确实是一个问题,我会先尝试ping这个盒子(网上有很多通过VB6 ping的例子).