Я использую sh для запуска некоторого кода VBA, который обращается к SQL серверу, запускает сценарий SQL и возвращает результат.
Мой сценарий работает с меньшим SQL сценарием, однако, когда я запускаю сценарий SQL, который занимает около 3 минут 30 секунд, я получаю:
ошибка времени выполнения '-2147217871 Истекло время ожидания запроса.
Это я впервые пытаюсь это сделать, поэтому я не полностью осознаю все, что происходит в моем коде.
Вот мой код VBA, который я использую:
Dim oConn As ADODB.Connection
Dim objCmd As New ADODB.Command
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim mssql As String
Dim row As Integer
Dim col As Integer
Dim wb As Workbook
Set wb = ThisWorkbook
Application.ScreenUpdating = False
Set oConn = New ADODB.Connection
Set rs = New ADODB.Recordset
'CREATE A STRING BY READING THE SQL FILE ROW BY ROW
mssql = ""
Dim hnd As Integer
hnd = FreeFile
'paste the place where the sql file is in here
Open "directory for my sql file" For Input As hnd
'loop sql file row by row and add each row to the string
Dim file_row As String
Do Until EOF(hnd)
Line Input #hnd, file_row
mssql = mssql & file_row & vbNewLine
Loop
Close #hnd
'Debug.Print mssql
oConn.ConnectionString = "driver={SQL Server};" & _
"server=myserver;uid=name;pwd=password;database=my database"
'-------------changing connection timeout and commandTimeout doesn't seem to help--------------'
oConn.ConnectionTimeout = 500
oConn.Open
objCmd.CommandTimeout = 500
objCmd.ActiveConnection = oConn
rs.Open mssql, oConn
If rs.EOF Then
MsgBox "No matching records found."
rs.Close
oConn.Close
Exit Sub
End If
Debug.Print "We made it"
rs.Close
oConn.Close