如果服务器不存在,如何更快地使ADO连接超时?

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)

Ang*_*ker 5

在建立TCP连接后,ConnectionTimeout启动.如果找不到服务器,则此值由Windows TCP子系统控制.

如果这对你来说确实是一个问题,我会先尝试ping这个盒子(网上有很多通过VB6 ping的例子).