SQL Server命令超时超时已过期。操作完成之前经过的超时时间或服务器没有响应

时间:2010-05-05 09:31:40

标签: asp.net sql sql-server connection-string sqlclient

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

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

这是可以理解的,较慢的服务器需要更长的时间来产生结果;需要更长的时间并产生超时。

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

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

感谢

3 个答案:

答案 0 :(得分:2)

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

  

我们很高兴再等一会儿   要返回的查询。

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

答案 1 :(得分:0)

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

可能有几个简单的修复:

  • 运行SQL Profiler大约半小时,然后创建它建议的索引
  • 清除数据库中的旧记录
  • 向服务器添加一些额外的内存
  • 安装较新版本的SQL Server

答案 2 :(得分:0)

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

并注意在SSMS 2008中活动监视器不在管理节点下,并且在工具栏中并且已经更改了其界面

并且作为kill这个进程,我的alter table脚本成功提交了2个add列 并且与执行超时无关,只是锁定问题