SQL超时CommandTimeout经常超时

时间:2016-09-30 10:23:50

标签: vba excel-vba sql-server-2008 connection excel

我遇到了从Excel到SQL Server 2008的连接问题。我每天都会运行该文件,并且第一次运行它时会出现旁路超时错误。

预先取消"使conn.CommandTimeout更长时间"参数,我建议问题与窗口的长度没有直接关系:

  

SQL Server中的查询只需几秒钟

     

第二次运行脚本时,它运行正常,并且在总超时时间内运行了12个查询。

进行此操作的最佳方法是什么?我最初的想法是使用错误处理程序在没有用户输入的情况下重试超时错误,但这会将超时窗口增加到3分钟,这是不可取的。

感谢任何帮助。

Sub ConnectServer(FileName As String, rngToPrint As Range, strSqlQuery As String)
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConnString As String
    Dim iCols As Long

    If Not (rs Is Nothing) Then
        If (rs.State And adStateOpen) = adStateOpen Then rs.Close
        Set rs = Nothing
    End If


    sConnString = "poop"

    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    conn.CommandTimeout = 90

    conn.Open sConnString

    Set rs = conn.Execute(strSqlQuery)


    For iCols = 0 To rs.Fields.Count - 1
        Sheets(rngToPrint.Worksheet.Name).Cells(rngToPrint.Row - 1, iCols + 1).Value = rs.Fields(iCols).Name
    Next

    If Not rs.EOF Then

        rngToPrint.CopyFromRecordset rs
        rs.Close
    Else
        MsgBox "Error: No records returned.", vbCritical
    End If

    If CBool(conn.State And adStateOpen) Then conn.Close
    Set conn = Nothing
    Set rs = Nothing

End Sub

0 个答案:

没有答案