在数据上下文中调用SubmitChanges()时,我遇到了以下异常的问题:
“超时已过期。操作完成前经过的超时时间或服务器没有响应。语句已终止。”
这发生在由5-100个并发用户使用的ASP.NET Web应用程序上。请注意,增加站点/数据库的超时时间没有帮助,并且运行的查询非常简单快速。我已经完全删除了超时期限,导致网站在发生错误时无限期挂起。
此问题的其他方面:
这似乎可能是并发/死锁问题,但我不知道如何调试或修复它。有什么想法吗?
答案 0 :(得分:1)
当应用程序执行数据库操作并等待SubmitChanges的响应时,尝试在Sqlserver中运行以下查询
**sp_who2**
查看返回输出中的Blkby列。 如果找到一行具有某个值(这是阻止连接的命令的SPID)。
检查该列中的ProgramName以查找更多信息。
如果您发现所描述的阻止的SPID,则运行以下命令以查找在该SPID上执行的最后一个查询。 说Blkby的价值是59
**dbcc inputbuffer(59)**
这将使查询阻止您的应用程序查询。
这是解决问题的一种方法。
有时由于存储过程中的默认值参数导致参数嗅探而发生超时。
在这种情况下,您可以尝试使用该行作为使用过程中的第一行
设置ARITHABORT ON
更改程序并再次尝试数据库操作。
如果有效,您可以在之后删除此行,然后再次更改程序。
如果适合您,请尝试此操作。
我在这里找到了类似的问题
还可以在此处阅读有关在Web应用程序中运行缓慢且在SSMS中立即运行的更多信息
Stored procedure slow when called from web, fast from Management Studio
希望它有所帮助。