不同版本的库中的VBA ADO连接超时

时间:2014-06-10 13:20:31

标签: sql-server vba timeout ado

我正在尝试使用VBA(Excel 2007)和ADO连接对象连接SQL Server 2012上的视图。除了一个视图外,一切都很完美,即使是最简单的查询也会出现运行时错误。要设置最大连接时间,请使用命令YourConnection.ConnectionTimeout = 0。不同版本的Microsoft ActiveX Data Objects x.x Library(2.0,2.1,...,2.8,6.1,6.2)是否有不同的最大超时,或者最多有30个secunds?另外 - 该库的2.0,...,2.8版本有什么区别 - 我可以在哪里找到它?

1 个答案:

答案 0 :(得分:3)

ConnectionTimeout仅适用于连接建立。如果查询在执行期间超时,则应将Command对象与CommandTimeout一起使用。请注意,您必须在每个Command对象上设置它,因为它不是从Connection对象继承的:

Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=xxx;Catalog=xxx;User ID=xxx;Password=xxx;"
cnn.Open

Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = cnn
cmd.CommandTimeout = 120
cmd.CommandText = "SELECT * FROM [Table]"

Dim rs As New ADODB.RecordSet
rs.Open cmd, , adOpenStatic, adLockOptimistic

检查MSDN以获取更多信息和MDAC/ADO history