0

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

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

以下是一些事实:

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

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

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

  4. 有一个触发器会更新LastModifiedDateand CreatedDate,但我删除了这些触发器,并更新了 EDMX 以确定这些触发器是否导致了无限循环。

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

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

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

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

  9. 其他存储过程工作正常

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

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

谢谢。

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

4

1 回答 1

0

我能想到两件事:

  1. 我假设您已经在存储过程中实现了异常处理。如果没有,请这样做,并尝试先掌握问题陈述。当您说某些行发生这种情况时,可能是由于数据不正确?阅读本文以获取有关如何在SQL Server 2008

  2. 你试过找出是否有死锁吗?请阅读内容以获得详细的程序和理解。

于 2012-04-16T04:34:00.967 回答