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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET连接SQLServer返回数据时提示“超时时间已到。在操作完成之前超时时间已过或服务器未响应。” 附代码相关的知识,希望对你有一定的参考价值。

对于这个问题的解决办法我到是知道,我只是想知道发生错误的原因。
补充一下:
1.这个问题偶尔会出现,多数情况下很少提示上面的错误。
2.sql 代码 执行的也是很快的,而且查询数据的返回结果也不是很多。
3.sql 存储过程部分查询代码如下
Select
PId,
PName,
-1- Count(Id) As Num,
-1- Sum(SalePrice) As SalePrice,
-1- Sum(CostPrice) As CostPrice
-2- 10 As Num,
-2- 11.00 As SalePrice,
-2- 12.00 As CostPrice
From Project
--------------------------------------------------------
当我使用 -1- 的代码时候,就容易出现错误,当使用-2-的代码替换时,就没有这个错误了。
以下是我猜测的错误:
例如:
1.是否是我的代码出现问题?
2.网络原因?[因为连接的数据库在服务器上]
3.返回的数据量太大?[但实际仅有 20条记录而已]
***************************************
1.是否是我的代码出现问题?
是指 我的 .net代码 写的有问题!
*百度知道 是不是 不稳定啊**我明明收到网友的回复了,但是一进来还是什么都没有???*
//////////////////////////////////////////////
解决办法:
我之前是通过 调用存储过程的,后来干脆放弃使用存储过程,而是把sql代码直接写在了程序页面,然后这个问题就消失了。
原因我解释 不清楚。 同时还要非常感谢 bluewater_52d1、s529586 和 各位朋友的热心帮助。

我也遇到过这个问题,你可以试着打开你的sql客户端,连接下服务器上的数据库,估计会直接出现这个错误提示,然后你把连接时间改成30秒,或者更长一些就能够登录到服务器上的sql server.
解决方法就是把项目配置文件中的访问超时时间设置长一些.
我遇到这个问题时是因为我的项目发布在虚拟机上,所以速度比较慢,访问总是超时,去试试吧,这个方法或许能解决你的问题.
不行的话就在代码上设置command的timeout时间.
参考技术A 是你的SQL语句有问题 Select
PId,
PName,
-1- Count(Id) As Num,
-1- Sum(SalePrice) As SalePrice,
-1- Sum(CostPrice) As CostPrice
聚合函数不能很单个字段同时使用或者在后面加一个group by PId,PName,Id,SalePrice,CostPrice
参考技术B 能不能把数据库放在本地测试一下
查看一下sql server数据库连接数追问

SqlServer 服务器 是在局域网上的,只是IP段不同,数据挺大的,弄到本地机器上不是很方便啊。
挂到IIs 上了之后,在局域网访问 还是出现这个错误,其实 我们那个服务器也就是能做个服务器用,都不如不同的家用电脑。
哎……

追答

检查sql 是否死锁

java项目页面为啥会超时?

页面超时会弹出超时提示,但是为什么会超时呢?
是客户端没有想服务器发起请求?还是页面没有和数据库发起数据交互?或者其他的原因。
求热心的码神解答。

你说的是请求没有响应吧,首先检查服务器有没有错误的log,如果是调试,看看是不是存在断点,如果不是这两种情况,那么代码肯定是存在一定的问题,需要细心的排除代码哪里停住了,一般不会是直接的执行错误,执行错误页面会返回错误的页面比如404,500等等 参考技术A 是页面没有和服务器发起请求,和数据库没有关系

同时数据库连接也会超时的问题,这个就跟数据库连接池有关系了

举个简单例子,你登陆网上银行,一段时间不操作,就会超时不能发起请求了,必须重新登陆才行追问

您的意思是,项目设置了超时时间30分钟,30分钟之内页面没有向‘服务器’发起请求就算超时。
而不是页面没有向’数据库‘发起请求?

您的例子‘登陆网上银行’,页面跳转属于向服务器发起请求吗?

追答

直白点讲,只要你是点击网页的任何链接,提交的任何表单,都是想服务器发送请求

如果你在服务器设置的超时时间内没有发起以上方式的任何请求,那么就会超时

客户端一般来讲是不会直接操作数据库的

客户端(浏览器)------>服务器-------->数据库

本回答被提问者和网友采纳
参考技术B 这应该是session超时,而后台程序判断超时之后 页面弹出的提示.
一般中间件 例如:Tomcat 的session会话时间为30分钟 如果你不进行操作 会自动释放掉.
如果想不超时 只要修改配置就可以.追问

我设置的是30分钟。
我的意思是这样的,30分钟之内,不进行什么操作才会释放session?
是不点击页面?还是不发起请求?还是不查询数据?

追答

你所说的 点击页面 查询数据库 其实都归于发送请求.当前session就会处于空闲状态.就会释放掉.
说白了点 就是你开启系统之后,不发送任何请求.

参考技术C 可能是查询数据时,由于数据量比较多,或是逻辑处理比较多 参考技术D session超时?因为客户端没有发起请求。时间超过默认session超时时间

以上是关于.NET连接SQLServer返回数据时提示“超时时间已到。在操作完成之前超时时间已过或服务器未响应。” 附代码的主要内容,如果未能解决你的问题,请参考以下文章

Connection Timeout和Command Timeout

sql 数据库连接超时

在代理 testng 中工作时返回连接超时

SQL Server 的超时设置

sqlserver远程连接中链接服务器"”的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期问题

com.microsoft.sqlserver.jdbc.SQLServerException:连接超时(读取失败)