我在Excel 2016中使用下面的VBA查詢exacutes一個MS SQL存儲過程中,有時會順利執行,並返回記錄集,但更多的時候我得到一個錯誤[Microsoft][ODBC SQL Server Driver] query timeout expired
。Excel的VBA:ODBC SQL Server驅動程序查詢超時過期
與此同時,當我們去SSMS並執行它運行沒有問題的查詢。
這是假設的問題而造成的Excel/VB比SQL或查詢本身。
搜索在檢查網絡防火牆這個錯誤的結果,但我們試圖在其他機器上沒有防火牆,問題依然存在。
這裏是VB代碼:
Public Sub GetDataset2()
Dim cn As ADODB.Connection
Dim cm As Object
Dim rs As ADODB.Recordset
Dim UID, PWD, DB As String
UID = "userId"
PWD = "passworD"
DB = "192.168.1.1"
Set cn = New ADODB.Connection
Set cm = CreateObject("ADODB.Command")
cm.CommandTimeout = 0
cn.Open ("Driver={SQL Server};Server=" & DB & ";Database=myDatabaseName;Trusted_Connection=no;Timeout=900;Uid=" & UID & ";Pwd=" & PWD)
Set rs = cn.Execute("Get_dataset2 '" & Format(Range("dateFrom"), "yyyy-mm-dd") & "' ,'" & Format(Range("dateTo"), "yyyy-mm-dd") & "' ")
Dim lRow As Long
'Find the last non-blank cell in column A(1)
lRow = Sheets("data").Cells(Rows.Count, 1).End(xlUp).Row
lr = "A" & lRow + 1
Sheets("data").Range(lr).CopyFromRecordset rs 'insert data
cn.Close
End Sub
任何建議表示讚賞。 喬爾
您是否嘗試過更新的ODBC驅動程序(Native Client xx或ODBC驅動程序xx for SQL Server)?任何可疑的日誌數據? – BitAccesser
我將驅動程序更改爲我安裝的另一個版本{ODBC驅動程序13 for SQL Server},同樣的錯誤。 – joell
這個[怎麼做我運行一個存儲過程與參數從excel-vba字符串](https://stackoverflow.com/questions/31986552/how-doi-i- run-a-stored-procedure-with-parameters-from-excel-vba-string) – BitAccesser