非常简单的存储过程将超时

时间:2010-02-10 20:59:17

标签: sql-server vb.net stored-procedures timeoutexception

我有一个问题,这个存储过程在整个应用程序中99%的时间都有效,但是从应用程序的特定部分调用时会超时。

该表只有3列,包含大约300条记录。存储过程只会带回一条记录,看起来像这样

“从Table Where Column = @parameter中选择*”

当在管理工作室中执行sp时,需要:00秒。

存储过程在我们的应用程序中经常使用,但似乎只在我们程序的一个特定部分超时。我想不出为什么这么简单的sp会超时的原因。有什么想法吗?

这是一个vb.net桌面应用程序并使用sql server 2005。

4 个答案:

答案 0 :(得分:6)

你已经有一些代码已经锁定在桌面上,因此无法读取。

答案 1 :(得分:3)

SELECT * FROM Table WITH (NOLOCK) WHERE Column = @parameter

答案 2 :(得分:1)

我们遇到了一个非常类似的问题,我们有几个存储过程可以在应用程序中保持超时(约30秒),但在SSMS中运行正常。

我们使用的短期解决方案是重新运行暂时解决问题的存储过程。如果这也暂时为您解决了问题,那么您应该调查参数嗅探问题。

有关更多信息,请参阅http://dannykendrick.blogspot.co.nz/2012/08/sql-parameter-sniffing.html

答案 3 :(得分:0)

您需要获得效果指标。使用sql profiler确认SP在那时或其他时候很慢。如果是那时sql很慢的话 - 考虑像锁可能会迫使你的查询等待的东西。让我们知道,我们可能会在那时提供更具体的信息。

如果它不是SP而是说VB代码,那么像RedGate's AntsJetBrains' DotTrace这样不错的配置文件可能会有所帮助。