Sql Excel VBA-执行x次后调用存储过程超时
有人能给我解释一下这种行为吗 我们正在执行一个从ExcelVBA调用它的存储过程,并将结果放在透视表中。我们使用以下代码:Sql Excel VBA-执行x次后调用存储过程超时,sql,sql-server,excel,vba,Sql,Sql Server,Excel,Vba,有人能给我解释一下这种行为吗 我们正在执行一个从ExcelVBA调用它的存储过程,并将结果放在透视表中。我们使用以下代码: Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset Set cmd = New ADODB.Command connectionstring = "Provider=SQLOLEDB.1;Password=***;User ID=***;Initial Catalog=***;Data Source=*
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cmd = New ADODB.Command
connectionstring = "Provider=SQLOLEDB.1;Password=***;User ID=***;Initial Catalog=***;Data Source=***"
cnn.Open connectionstring
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.commandText = "EXEC spTest '" xxx "', '" & xxx "';"
End With
Set rst = cmd.Execute
存储过程:包含200行代码,在1秒内执行,结果正确
问题发生在x次成功执行后,即出现超时错误。解决此问题的唯一方法是注释掉75%的存储过程,然后从Excel中再次执行它。接下来,我们注释掉存储过程的50%,并再次执行它。接下来25%和最后一次运行时,我们再次执行完整的存储过程,现在不再出现超时错误
当我现在调用它时,它将在大约3秒钟内返回Excel中透视表中的结果。这不是我第一次遇到这个问题
还有其他人有过这个问题吗?我能怎么办?是什么导致了这种行为
谢谢 这通常发生在需要30秒以上的请求时,这是命令的默认超时时间 试着改变这个
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.commandText = "EXEC spTest '" xxx "', '" & xxx "';"
End With
到
这会将您的超时设置为1200秒,希望这能解决问题。发布存储过程代码。您好,我想我已经找到了问题所在。我们已经在stoed过程中添加了WITH RECOMPILE提示。这是一个参数嗅探问题。ThxHi,在问这个问题之前我已经试过了。这不管用。但是thx
With cmd
.ActiveConnection = cnn
.CommandTimeout = 1200
.CommandType = adCmdText
.commandText = "EXEC spTest '" xxx "', '" & xxx "';"
End With