【发布时间】:2017-11-26 06:33:28
【问题描述】:
我在 Excel 2016 中使用了以下 VBA 查询,该查询执行 MS Sql 存储过程,有时它可以顺利执行并返回记录集,但更多时候我收到错误 [Microsoft][ODBC SQL Server Driver] query timeout expired。
同时,当我们转到 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 驱动程序(本机客户端 xx 或 SQL Server 的 ODBC 驱动程序 xx)?任何可疑的日志数据?
-
我将驱动程序更改为我安装的另一个版本 {ODBC Driver 13 for SQL Server},同样的错误。
标签: sql-server vba excel