Access 中的 SQL 存储过程超时
Posted
技术标签:
【中文标题】Access 中的 SQL 存储过程超时【英文标题】:SQL Stored Procedure times out in Access 【发布时间】:2013-01-20 17:23:15 【问题描述】:从 Access VBA 执行时,以下 SP 超时。从管理控制台执行时它工作正常。如果相关,服务器确实有很长的 ping 时间:
Dim cnn As ADODB.Connection
Dim cmd As New ADODB.Command, rs As New ADODB.Recordset, param As New ADODB.Parameter
Dim fld As ADODB.Field
Dim stMessage As String
Set cnn = New ADODB.Connection
cnn.ConnectionString = "DRIVER=SQL Server;SERVER=server01;DATABASE=db_a;Trusted_Connection=Yes"
cnn.Open cnn.ConnectionString
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "we_ci_db.stprUpdateValuesInitial_A"
Set param = cmd.CreateParameter("@DataSet", adInteger, adParamInput, , stDataSet)
cmd.Parameters.Append param
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
Set rs = cmd.Execute
exit1:
Set cmd = Nothing
Set rs = Nothing
Exit Function
【问题讨论】:
它更新单个表中的多个字段,其中一些更新需要从函数中检索值。 没有线索,这是我发现的第一个有效的代码。请注意,它会返回一些关于 SP 成功程度的基本信息。 【参考方案1】:您可以使用ADODB.Command
对象的CommandTimeout
属性设置超时:
// set a very high number of seconds before timeout
cmd.CommandTimeout = 9999999
【讨论】:
我第一次看错了问题,所以我为ADO更新了上面的答案 我不想追求无限的价值,以防我弄乱了代码并占用了服务器。我从 5(秒)开始,然后开始工作。 60 秒效果很好,所以我把 90 设置为好衡量标准。但是感谢您为我指明了正确的方向。 没问题!很高兴我能帮忙:)以上是关于Access 中的 SQL 存储过程超时的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Access 2010 中的 SQL 存储过程返回多个记录集
从 MS SQL SERVER 和 MS ACCESS 调用存储过程的结果之间的差异
调用 SQL Server 存储过程的 SqlCommand 超时