我正在尝试使用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版本有什么区别 - 我可以在哪里找到它?
答案 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。