2

我们已经部署了一个 ASP.NET Web 应用程序很多年了......上周我们迁移到一个稍慢的服务器以节省一些钱。

现在我们经常收到命令超时:超时已过期。操作完成前超时时间已过或服务器无响应

这是可以理解的,因为较慢的服务器将需要更长的时间才能产生结果;花费更长的时间并产生超时。

是否有任何系统范围的方法可以让 SqlClient 设置更长的超时时间?我们无法更改代码,因为它无处不在……我们也在使用多种数据访问技术。

也许连接字符串上有默认的命令超时设置?我们只需要增加 30 秒;我们很高兴等待查询返回。

谢谢

4

3 回答 3

2

我会查看该查询的执行计划并尝试加快速度。30 秒或更多对于 Web 应用程序中的 sql 查询来说是长的时间。你说:

我们很高兴等待查询返回。

但我敢打赌你会更高兴它立即运行。如果您非常确定您拥有所有正确的连接、索引等并更新了统计信息等,那么超时可能是唯一的方法。但是,通常一点点优化可以使慢查询更快。

于 2010-05-05T13:27:50.110 回答
0

连接字符串仅允许您指定连接超时。我不知道设置应用程序范围的 ADO.NET 设置的任何其他方式。

可能有几个简单的修复:

  • 运行 SQL Profiler 半小时左右,并创建它建议的索引
  • 从数据库中清除旧记录
  • 向服务器添加一些额外的 RAM
  • 安装较新版本的 SQL Server
于 2010-05-05T11:04:49.227 回答
0

我解决了与在进程下的活动监视器中找到的正在运行的进程(远程 Excel 选择查询)相同的问题

请注意,在 SSMS 2008 中, 活动监视器不在管理节点下,而是在工具栏中,并且也稍微更改了其界面

并且作为终止此过程,我的带有 2 个添加列的更改表脚本已成功提交,与执行超时无关,只是锁定问题

于 2010-10-03T16:58:26.137 回答