DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: g929959149
今日帖子: 27
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sulifeng (sulifeng) ★☆☆☆☆ -
普通会员
2022/1/17 15:17:14
标题:
请教:空闲30分钟后,系统无法运行。 浏览:775
加入我的收藏
楼主: 系统架构采用三层结构,前台采用delphi7开发,后台数据库采用MS - SERVER2000,中间层采用ADO链接数据库。
当应用程序空闲30分钟后,系统无法运行,提示:
Windows socket error: 远程主机强迫关闭了一个现有的连接。(10054),on API recv

ADO链接数据库字符串:
    ADOConnection1.ConnectionString :=
      'Provider=SQLOLEDB.1;Password=sasasa;' +
      'Persist Security Info=True;User ID=sa;' +
      'Data Source=SERVER2;Use Procedure for Prepare=1;' +
      'Auto Translate=True;Packet Size=4096;' +
      'Workstation ID=SERVER1;Use Encryption for Data=False;' +
      'Tag with column collation when possible=False;' +
      'Pooling=False;Initial Catalog=' + Zt_db

请教各位大侠,该问题如何解决。

谢谢!
----------------------------------------------
-
作者:
男 lsuper (lsuper) ★☆☆☆☆ -
盒子活跃会员
2022/1/17 15:26:11
1楼: 偷懒可以通过 UniDAC 开启连接池和自动重连功能
----------------------------------------------
-
作者:
男 luckyrandom (luckyrandom) ★☆☆☆☆ -
普通会员
2022/1/17 17:39:10
2楼: 有可能是服务器端(Windows Server)策略里有闲置30分钟就中断连接。。到组策略里去找找
----------------------------------------------
SQL SERVER DBA QQ:315054403 曾经的Delphier  缘在上海
作者:
男 744840146 (744840146) ▲▲▲▲▲ -
注册会员
2022/1/17 17:42:10
2楼: 每10分钟执行一次 SELECT NOW() FROM table_name
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲△△ -
注册会员
2022/1/17 20:02:37
3楼: 不能判断一下吗? 断连就重新连接啊..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 tuesdays (Tuesday) ▲▲▲△△ -
注册会员
2022/1/17 20:03:30
4楼: 这跟30分钟没关系,  就算是3分钟, 你在读数据, 也有可能进程被强退..  难道程序就崩了?  不懂得判断重连?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 sulifeng (sulifeng) ★☆☆☆☆ -
普通会员
2022/1/17 21:13:15
5楼: 是的,3分钟也可能被退掉。程序死掉(死机)。
如何判断重连。
我的连接为:
  try
    DM.SocketConnection1.Address := Trim(RzEdit1.Text);
    DM.SocketConnection1.Connected := True;
  except
    RzEdit1.SetFocus;
    raise Exception.Create('远程服务器连接失败!');
  end;
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2022/1/18 8:51:37
6楼: 30分钟空闲还不断开连接的话早被人打死了 :-)
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。
又不靠它 delphi 吃饭,怕甚?
作者:
男 tuesdays (Tuesday) ▲▲▲△△ -
注册会员
2022/1/18 9:13:03
7楼: 如果没特殊要求, 可以在重载query方法, 里面写try. 
异常了就提示断连, 让用户选择是否重连.. 或者自动连接.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2022/1/18 10:41:34
8楼: ADO在某些情况下是会空闲断开的,没找到具体原因。每5分钟去 getdate() 后好很多。ado从来就没有一个很好的断开重连好用的功能。firedac现在好很多
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2022/1/18 13:56:07
9楼: 设备管理器-网【络】适配器-网卡-电源管理,把允许计算机关闭此设备以节约电源 选项关闭。程序长时间空闲,有可能网【卡】就休眠了,连接肯定就断了。
----------------------------------------------
-
作者:
男 siclj (无云) ▲▲▲▲▲ -
注册会员
2022/1/18 14:06:47
10楼: 新建一个 ConnectionObject
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/1/18 15:03:01
11楼: firedac在vcl上一样有这样的问题。但在中间件好像没有。
可在相关连接的error事件中重连
----------------------------------------------
-
作者:
男 kwer (★★★★★) ★☆☆☆☆ -
普通会员
2022/1/18 15:13:14
12楼: 长连接是蠢方案,短连接同样也好不到哪里去。。。socket天生就是一个包一个包的收发,TCP无非是多了一个连接判断而已。。。所以稍好的方案就是长短结合,比如现代的浏览器都改成长短结合的连接方式。
----------------------------------------------
==========-==========-==========-==========-==========
     多隆, 给我备一匹最快的马, 我有事要走先~~~
==========-==========-==========-==========-==========
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/1/18 19:20:31
13楼: firedac vcl空闲连接超时,不须要写任何代码,你只要操作一下设备就会自动唤醒。
但服务型的vcl就麻烦了,你写的程序因为空闲连接超时不运行了,而这时没有任何人去唤醒他
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行46.875毫秒 RSS