我们在SQL Azure中托管了一个数据库,我们通过Cloud Service webapp连接到该数据库。每隔一段时间,一个返回100行的特定存储过程会在从实际的webapp运行时抛出超时异常。当我们从SQL Management Studio运行具有相同参数的相同存储过程时,我们得到实际结果。这个问题持续了一段时间,有时会像发生的那样快速消失。
从我们的应用程序中检索的其他存储过程和数据就像一个魅力,但一个特定的SP有这个问题,这很奇怪。当问题发生时,我们可以通过在where子句中添加WHERE 1=1
之类的内容来临时修复它。然后它会工作一段时间,但在某些时候,整个事情会重新开始。我无法控制这里出了什么问题,或者是什么导致了这个问题。我们还在存储过程中添加了WITH RECOMPILE
,但无济于事。
答案 0 :(得分:1)
我和我的经历过同样的事情。我检查了执行计划,一切都很好。所以我将数据库复制到我的本地机器,它运行在那里没有任何问题。最后,我决定删除并重新创建超时的存储过程。在这样做之后,SP再次正常运行而没有超时。
答案 1 :(得分:0)
我们遇到同样的问题,特别是在升级或降级服务器之后。我们发现包含“with recompile”的快速修改可以解决问题。在我们改变它一次后,我们将重新编译。不确定Azure是否在执行计划中出现某种损坏或发生了什么。不相信你需要“重新编译”你可能只需要做改变。