让ASP.net Web应用程序查询来自SQL Server 2005数据库的数据。有一个页面会偶尔超时。查询超时 - 零星
追溯代码并找到SQL。通过查询工具运行SQL,它总是在2秒内运行。 SQL Server的默认超时时间是10分钟。
此问题的解决方法是将sql server超时更改为20分钟,然后再更改为10分钟。然后页面通常需要2秒钟来查询和显示。
看过可能的锁定,但没有显示会导致问题。关于唯一的结论是重置超时设置正在杀死一个进程。
寻找一些可以追踪的想法。
谢谢
让ASP.net Web应用程序查询来自SQL Server 2005数据库的数据。有一个页面会偶尔超时。查询超时 - 零星
追溯代码并找到SQL。通过查询工具运行SQL,它总是在2秒内运行。 SQL Server的默认超时时间是10分钟。
此问题的解决方法是将sql server超时更改为20分钟,然后再更改为10分钟。然后页面通常需要2秒钟来查询和显示。
看过可能的锁定,但没有显示会导致问题。关于唯一的结论是重置超时设置正在杀死一个进程。
寻找一些可以追踪的想法。
谢谢
有两种不同的超时在这里玩。连接超时(在连接字符串中指定,并作为SqlConnection的属性)和查询超时(属性SqlCommand.CommandTimeout)。默认值为:
查询超时被定义为“所有网络的累积超时的结果的命令执行或处理过程中进行读取。在返回的第一行后仍可以发生超时,并且不包括用户处理时间,只有网络读取时间“
网络读取时间消耗(包括网络争用)的很多原因。我会寻找的东西:
如果您通过连接字符串指定了连接超时,则不会使用现有的连接SQL Server连接:由于连接池高速缓存基于所使用的连接字符串,因此会获得全新连接。你正确地Dispose()'你的连接/命令/等?如果你留下一个阅读数据的开放阅读器,你可能会留下一个锁,导致问题。有时,SQL Server扼流器会丢弃连接并留下一个鬼spid,这也会引起类似的锁争用问题。