执行存储过程时SQL Server超时

时间:2012-04-16 04:19:25

标签: sql-server ado.net timeout command-timeout

我遇到一个问题,即执行存储过程来更新表中的记录会导致超时错误。我最初从MVC3应用程序中调用我的存储过程,这是我第一次注意到错误。

但是,使用SQL Server Profiler,我能够复制ADO.NET生成的代码并直接在数据库上运行。我让这个查询运行大约5分钟,它仍然无法返回任何内容。

以下是一些事实:

  1. 存储过程大约有100个参数传递给它。

  2. 我的MVC应用程序,SSMS和Sql Server 2008都安装在同一台机器上。

  3. 存储过程尝试更新包含约5000个条目的表中的单个行。

  4. 有一个触发器会更新LastModifiedDateCreatedDate,但我删除了这些触发器,并更新了EDMX以确定是否存在由这些触发器引起的无限循环。 / p>

  5. 我们的实时服务器运行与我尝试运行的存储过程完全相同的存储过程(使用经典的asp)并获得正确的结果。此外,实时服务器无法在.NET

  6. 下运行相同的存储过程
  7. 我的机器无法运行经典ASP和ASP.NET的存储过程

  8. 存储过程似乎只对少数几行失败,而其他行完全正常。

  9. 我尝试更改传递给存储过程的参数值

  10. 其他存储过程可以正常工作

  11. 存储过程尝试更新的特定表上似乎存在锁定,因为执行其他查询工作正常,即使在等待执行此查询时也是如此。

  12. 如果有人对我可以执行的任何其他测试有任何想法,或者我可以使用任何工具来确定超时错误的根本原因。

    感谢。

    P.S。不要告诉我更改命令超时属性,我已经尝试将其设置为零!

1 个答案:

答案 0 :(得分:0)

我可以想到两件事:

  1. 我假设您已经在存储过程中实现了异常处理。如果没有,请这样做,并尝试先解决问题陈述。当你说,它出现在某些行时,可能是由于错误的数据?有关如何在SQL Server 2008

  2. 中执行异常处理的信息,请阅读this
  3. 您是否尝试过发现是否有死锁? 请阅读this了解详细程序和理解。