超时已过。在操作完成之前超时时间已过或服务器没有响应[重复]

Posted

技术标签:

【中文标题】超时已过。在操作完成之前超时时间已过或服务器没有响应[重复]【英文标题】:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding [duplicate] 【发布时间】:2012-09-23 14:11:34 【问题描述】:

我正在尝试执行此查询:

SELECT * from vwLstDtaLines d1,vwLStDtafiles d2 where d1.DtaLinePaymentDate='1/1/2000'or d1.DtaLinePaymentDate='1/1/2012'  or d1.DtaLineUserCre='abc' or d1.DtaLineUserMatch='abc' or d2.DtaFileName='Sent'



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

一次又一次地得到这个错误

【问题讨论】:

您确定要进行交叉连接吗? 我想从两个视图中获取和比较数据。必须这样做:/ 这两个不同的视图是否有相似的列。您是否可以对这两者进行UNION(每个都有自己的WHERE 子句)而不是加入?从 SQL 的角度来看,您正在做的事情似乎根本上是错误的——这导致了您的超时。 【参考方案1】:

您可以在您的string connection 中增加您的Connect Timeout

注意:默认值为 15 秒

调整示例

<add name="ConnectionString" connectionString="Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Connect Timeout=200" providerName="System.Data.SqlClient"/>
</connectionStrings>

链接:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

【讨论】:

它仍然给出同样的错误:/ 您可以定义会话 asp.net 的超时,因为您的 asp.net 会话可能超时,请尝试使用 ... ... 我认为我的查询有问题尝试了这种方法也没有出现同样的错误【参考方案2】:

好吧,看看你的 SQL,在我看来你正在创建一个比你想要的更大的结果集。

SELECT * 
from vwLstDtaLines d1,vwLStDtafiles d2 
where d1.DtaLinePaymentDate='1/1/2000' or 
d1.DtaLinePaymentDate='1/1/2012'  or 
d1.DtaLineUserCre='abc' or 
d1.DtaLineUserMatch='abc' or 
d2.DtaFileName='Sent'  

此 SQL 语句在两个视图之间没有显式 JOIN。因此,您得到的结果集的大小可能类似于 d1r * d2r,其中 d1r 是 d1 中的行数,d2r 是 d2 中的行数。

我会开始寻找那里。在 SQL Server 中运行以下查询以找出:

SELECT COUNT(*)
from vwLstDtaLines d1,vwLStDtafiles d2 
where d1.DtaLinePaymentDate='1/1/2000' or 
d1.DtaLinePaymentDate='1/1/2012'  or 
d1.DtaLineUserCre='abc' or 
d1.DtaLineUserMatch='abc' or 
d2.DtaFileName='Sent'  

如果行数是天文数字,则说明存在连接问题。

【讨论】:

以上是关于超时已过。在操作完成之前超时时间已过或服务器没有响应[重复]的主要内容,如果未能解决你的问题,请参考以下文章

超时时间已到。在操作完成之前超时时间已过或服务器未响应。

.net网站调试错误:超时时间已到。在操作完成之前超时时间已过或服务器未响应。

EntityFramework Core Timeout 已过期。操作完成前超时时间已过或服务器无响应

Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。

Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。

.NET连接SQLServer返回数据时提示“超时时间已到。在操作完成之前超时时间已过或服务器未响应。” 附代码