2

在数据上下文上调用 SubmitChanges() 时,我遇到了以下异常的持续问题:

“超时时间已过。在操作完成之前超时时间已过或服务器没有响应。语句已终止。”

这发生在 5-100 个并发用户正在使用的 ASP.NET Web 应用程序上。请注意,增加站点/数据库的超时时间并没有帮助,并且正在运行的查询非常简单和快速。我已经完全取消了超时期限,这会导致网站在发生错误时无限期挂起。

这个问题的其他方面:

  • 它是间歇性的,无法可靠地再现
  • 它只发生在几种不同的方法中,从来没有其他方法
  • 增加或删除超时时间无济于事
  • 重新启动服务器并重新启动 MSSQL 数据库没有帮助

这似乎是一个并发/死锁问题,但我不知道如何调试或修复它。有任何想法吗?

4

1 回答 1

1

当应用程序执行数据库操作并等待 SubmitChanges 的响应时,请尝试在 Sqlserver 中运行以下查询

**sp_who2**

查看返回输出中的 Blkby 列。如果您发现一行具有某些值(这是阻止您的连接的命令的 SPID)。

检查该列中的 ProgramName 以查找更多信息。

如果您发现如所述的阻塞的 SPID,则运行以下命令以查找在该 SPID 上执行的最后一个查询。说 Blkby 的价值是 59

**dbcc inputbuffer(59)**

这将使查询阻塞您的应用程序查询。

这是解决问题的一种方法。

有时由于存储过程中的默认值参数导致参数嗅探而发生超时。

在这种情况下,您可以尝试使用该行作为所用程序的第一行

设置阿里萨博特

更改过程并再次尝试数据库操作。

如果有效,您可以在之后删除此行,然后再次更改程序。

如果它适合你,试试这个。

我在这里发现了一个类似的问题

还可以在此处阅读有关 Web 应用程序和 SSMS 中的查询运行缓慢的更多信息

从 Web 调用存储过程时速度慢,从 Management Studio 调用时速度快

希望能帮助到你。

于 2012-06-30T16:14:18.893 回答