求救高手---adoconnection自动断线(100)

  • 主题发起人 主题发起人 海沙520
  • 开始时间 开始时间

海沙520

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi + Sql Server2000(sp4)服务器安装的是win2003.C/S架构现在客户端在连接服务器以后,程序一直运行,过段时间再去操作进,提示:"connection failed.".有时这个异常窗口能关掉(可是再连服务器也连不上),有时关不掉,一直存在,只能结束任务.当重新起动程序,一切正常,断线的间隔时间不固定.adoconnection的Keepconnection属性已经设置为true动态连接函数为:with conn dobegin close; LoginPrompt:= false; ConnectionString :='Provider=SQLOLEDB.1;'; ConnectionString := ConnectionString +' user id='+s_UserName+';'; ConnectionString := ConnectionString +' password='+s_Password+';'; ConnectionString := ConnectionString +' initial Catalog='+s_DbName+';'; ConnectionString := ConnectionString +' Data Source='+s_ServerIP+';';end;try conn.Connected := true;except conn.Connected := false;end;采用的是TCP/IP,命名管道已经被禁止客户端防火墙没有打开请问这是什么原因?
 
我也碰到这个问题.
 
请问你是怎么解决的?我已经测试了几天了,adoconnection的连接就这么一点代码,所有的ado都是连接数据模块的一个adoconnection.也没有其它地方可以更改了
 
怎么没有人回答呢,自己再顶一下各位看官也帮忙顶一下啊,帮顶的都有分,分不够,我再开贴给分
 
一段时间无操作,连接自动断掉,这种情况在很多保持连接的程序里会出现学学FTP呗,过段时间发次心跳,就是执行一条无意义的SQL
 
是啊,我是每隔一分钟通过SQL语句获取一次服务器时间
 
如果放一个timer,每一分钟通过SQL取一次数据,也会存在两个问题:1.如果和服务器长时间连接不上,程序就会没有响应,会死掉2.一分钟连一次,如果刚好是在一分钟的这个间隔断线,也会出现断线错误
 
我现在在程序中加了一个Timer,每一秒钟去连一次服务器,如果断线就马上重线连接.如果长时间断线,机器就会累死了
 
KeepConnection设了吗?
 
To lujunxiu1985 KeepConnection我在上面已经说了是设成true了
 
我也碰到这个问题,用ADO连接数据库,如果网络突然掉线,客户端程序就会卡死,请高手指教
 
对于此问题,我已经加了心跳现在不再提示"connection failed"可是客户端在dbgrid在填写数据时,会提示出错(因为dbgrid连接的adoquery的LockType属性采用的是:ltBatchOptimistic,批量处理),出错的现象就是卡住,没响应,只有关掉程序重启才可以,不知道这是什么原因客户端的内存是256M,系统只运行一两个软件,而且占用内存不是很多700m左右
 
关注,顶。。。。。。。。。。。。。。。
 
客户端防火墙只是一方面,如果是大网,可能还有内网防火墙,你这一边看不到的.我们就有这种情况,还有,服务器是否有超时设置.
 
To Keepyea 我们现在只是在内网中使用.公司用的是硬件防火墙,不过,没有限制软件的访问而且其它的软件运行都是正常,同一台服务器上还有金碟的财务软件,没有出现过掉线的情况. 服务器上我没有设置超时,我检查了一下,SQL的连接数是最大,也是一直连接.
 
客户端到服务器之间是否有防火墙?如果有应该是防火墙的问题,例如ISA,如果是这个原因,你需要修改防火墙的参数。
 
To teclick 我们公司是有用硬件防火墙,可是我们是在内网使用,是不经过防火墙的管控.防火墙只是对外网访问才有限制. 另外,以前我用的是台式服务器,是单CPU的,当时使用还好,没有什么问题,现在用的是 Hp 专用服务器,双CPU的.我不知道是不是双CPU的问题,这台电脑上一共有三个数据库,金碟财务软件,另一个公司自己用VB写的软件,他们连接都正常,没有断线.只有我这个软件经常断,(当然,另一点我这个软件的使用频次是最高的) 现在我已经在程序上每10秒,检测一次连接,如果中断,就自动连接,可是还是出现连接断开的错误,而且出错以后,无法再连接,只能强行结束程序,再重新运行才可以 头痛,因为其它两个软件没问题,所以公司也不让我动服务器,
 
把数据库挂在自己的电脑上试一下!这种情况服务器的问题比较多!
 
问题应该出在网络上.我的所有程序都用这种方式进行,不会有问题,.实在不行,你就在adoconnection的ondisconnect中加入adocon1.active:=true;让他一断就再联.
 
后退
顶部