2012-06-29 87 views
1

在数据上下文调用的SubmitChanges()时,我有一个持续的问题有以下例外的SubmitChanges()超时:LINQ到实体上

“超时时间已超时时间之前完成上述操作经过或者服务器没有响应,声明已经终止。“

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

这个问题的其他方面:

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

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

回答

1

当应用程序执行的数据库操作和等待的SubmitChanges的响应尝试在sqlserver的

**sp_who2** 

运行下面的查询已经在返回的输出看看Blkby列。 如果您发现有一行具有某个值(这是阻止您连接的命令的SPID)。

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

如果按照说明找到阻塞的SPID,则运行以下命令以查找在该SPID上执行的最后一个查询。 说Blkby有59

**dbcc inputbuffer(59)** 

这个值将给查询阻止您的应用程序查询。

这是排除故障的一种方法。

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

在这种情况下,你可以尝试使用该行,使用

SET ARITHABORT在程序的第一行ON

改变程序并再次尝试数据库操作。

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

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

我发现这里

类似的问题也了解查询的详细信息在运行的Web应用程序缓慢,并立即在SSMS这里

Stored procedure slow when called from web, fast from Management Studio

希望它能帮助。

+0

谢谢Dnsh,我会试一试,让你知道它是否有效。由于问题是间歇性的,我需要等待一些超时开始发生,然后我会检查Blkby – PseudoTek