超时已过。在操作完成之前超时时间已过或服务器没有响应[重复]
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 会话可能超时,请尝试使用好吧,看看你的 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 时间已到。在操作完成之前超时时间已过或服务器未响应。