Попытка запустить SQL скрипт из VBA - PullRequest
0 голосов
/ 10 июля 2020

Я использую 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
...