【发布时间】:2011-08-29 12:45:14
【问题描述】:
我们在我们的一个网站上遇到了奇怪的连接超时。
我们的环境由一个 IIS 7 Web 服务器(在 Windows Server 2008 R2 标准版上运行)和一个 SQL Server 2008 数据库服务器组成。
在调试引起超时的网站功能时,我们注意到连接本身需要几毫秒才能完成,但在数据库上调用存储过程的SqlCommand 在执行期间会挂起几分钟,然后引发超时例外。
另一方面,当我们直接在数据库上运行存储过程时,只需 2 秒即可正确完成执行。
我们已经尝试了以下方法:
- 修改
SqlCommand网站代码超时 - 修改了
web.config文件的执行超时 - 修改了
web.config文件上的sessionState超时 - 修改了
web.config文件上的授权 cookie 超时 - 修改了 IIS 上网站属性的连接超时
- 修改了 IIS 上的应用程序池关闭时间限制
- 检查 IIS 上的应用程序池空闲超时
- 检查 SQL Server 属性的执行超时(设置为 0,无限制)
- 使用其他参数直接在数据库上测试存储过程
我们感谢任何帮助。
尼拉夫
【问题讨论】:
-
当它刚刚挂起时,您是否检查过您尝试访问的表上是否存在已知锁?
-
是的..我检查了,没有锁。
-
在 IIS 中不太可能是任何东西......事实上,Sql Server 在这两个上下文之间做了一些不同的事情。跟踪它、分析它、检测它。我敢打赌,您的应用程序和 SSMS 之间的安全信誉是不同的......我已经看到这会导致问题取决于 proc 的代码。
标签: asp.net sql-server connection-timeout