【问题标题】:SQL Stored Procedure times out in AccessAccess 中的 SQL 存储过程超时
【发布时间】: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 成功程度的基本信息。

标签: sql-server ms-access stored-procedures vba


【解决方案1】:

您可以使用ADODB.Command 对象的CommandTimeout 属性设置超时:

// set a very high number of seconds before timeout
cmd.CommandTimeout = 9999999

【讨论】:

  • 我第一次看错了问题,所以我为ADO更新了上面的答案
  • 我不想追求无限的价值,以防我弄乱了代码并占用了服务器。我从 5(秒)开始,然后开始工作。 60 秒效果很好,所以我把 90 设置为好衡量标准。但是感谢您为我指明了正确的方向。
  • 没问题!很高兴我能帮忙:)
猜你喜欢
  • 2019-01-07
  • 2014-04-14
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多