我遇到了从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