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 存储过程出错,超时时间已过

调用 SQL Server 存储过程的 SqlCommand 超时

在 ASP.NET MVC 中执行 SQL Server 存储过程时如何防止超时错误?

标量函数在存储过程中使用时在 SQL Server 中发生请求超时问题