ADO.net在连接超时值之前连接timedout

时间:2012-11-15 09:21:36

标签: wcf sql-server-2008 ado.net

我们有一个连接到SQL Server 2008 R2数据库的WCF数据服务。当服务尝试从数据库访问数据时,连接将在Connection Timeout值和抛出超时异常之前超时。

这是连接字符串:

Data Source=XXXX;Initial Catalog=XXXX;MultipleActiveResultSets=False;
Connection Timeout=80;Integrated Security=false;User ID=XXX;Password=XXX

在这个连接字符串中,即使我们将{80}作为Connection Timeout,连接也会在700毫秒左右超时并抛出异常

  

System.Data.SqlClient.SqlException(0x80131904):超时   过期。
  在完成之前经过了超时时间   操作或服务器没有响应。

仅在某些查询中发生这种情况。

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

导致错误的不是ConnectionTimeout;这是CommandTimeout。另请参阅this question

因此,解决方案是在查询更加昂贵的情况下为CommandTimeout设置更高的值。

答案 1 :(得分:0)

这种类型的超时可能有三个原因;

  1. 某处出现僵局

  2. 数据库的统计信息和/或查询计划缓存不正确

  3. 查询过于复杂,需要调整

  4. 取自以下链接

    Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated

    尝试优化此处提到的查询

答案 2 :(得分:0)

我有同样的问题,谷歌把我带到了这里。

  

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

就我而言,数据库服务器上尚未打开mssql防火墙端口(默认值= 1433 TCP)。