首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPROC在SQL Server 2005中挂起

问SPROC在SQL Server 2005中挂起
EN

Stack Overflow用户
提问于 2010-02-04 18:04:35
回答 3查看 667关注 0票数 0

我在SQL Server2005中遇到了一个问题,在SQL Server2005中,存储过程似乎随机挂起/锁定,并且从不返回任何结果。

存储过程所做的是调用一个函数,该函数将两个不同的函数合并在一起-返回相同类型的数据,但条件不同。没有什么进展。我不认为这是函数挂起的问题,因为还有其他SPROC调用相同的函数也没有问题,即使第一个函数已经锁定。

在SPROC挂起后,任何进一步调用它的尝试都将导致超时-不是在调用本身,但响应时间将太长,因为没有返回任何结果,代码将抛出异常。

在一个相对低负载的系统中,这种情况在两个月内至少发生了三次。重新启动SQL Server可以解决这种情况,但我不认为这是问题的“解决方案”。

我查找了一些信息,发现了一些关于查询缓存损坏的信息。然而,这是关于动态SQL字符串的,而我的问题不是这样。我猜它可能仍然是查询缓存。

有没有人遇到过同样的问题,如果有,你对此做了什么(不要说“每天早上重新启动SQL Server”; )?有没有办法调试这个问题,尝试找出到底哪里出了问题?我不能重现这个问题,但当它再次出现时,如果我知道在哪里仔细查看就好了。

我不认为这有什么不同,但为了记录,SPROC是从.NET 3.5代码中调用的,使用的是实体Franework。我说这没有什么不同,因为当我测试直接从SQL Server Management Studio执行SPROC时,也没有返回任何结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-04 19:18:38

这很可能是参数嗅探

重新启动SQL server将清除计划缓存。如果您重新构建统计信息或索引,问题也会消失:"ALTER INDEX“和"sp_updatestats”

我建议使用“参数屏蔽”(而不是重新编译!)来绕过它

所以我已经回答了:

票数 2
EN

Stack Overflow用户

发布于 2010-02-04 18:07:31

你的统计数据是最新的吗?缓存查询计划不正确的常见原因之一是统计信息过期。

您是否有定期计划的索引重建作业?

票数 2
EN

Stack Overflow用户

发布于 2010-02-04 19:12:51

您是否验证了SQL Server日志..?当然,问题的原因已记录在案。至少你可以从中得到一些提示。请检查一下。

这篇优秀的MSDN文章SQL Server technical bulletin - How to resolve a deadlock 非常详细地解释了识别和解决死锁问题所需的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2198758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档