|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2022/1/17 15:17:14 |
标题: |
请教:空闲30分钟后,系统无法运行。 |
浏览:1274 |
|
加入我的收藏 |
楼主: |
系统架构采用三层结构,前台采用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 开启连接池和自动重连功能
----------------------------------------------
-
|
作者: |
|
2022/1/17 17:39:10 |
2楼: |
有可能是服务器端(Windows Server)策略里有闲置30分钟就中断连接。。到组策略里去找找
----------------------------------------------
SQL SERVER DBA QQ:315054403 曾经的Delphier 缘在上海
|
作者: |
|
2022/1/17 17:42:10 |
2楼: |
每10分钟执行一次 SELECT NOW() FROM table_name
----------------------------------------------
-
|
作者: |
|
2022/1/17 20:02:37 |
3楼: |
不能判断一下吗? 断连就重新连接啊..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2022/1/17 20:03:30 |
4楼: |
这跟30分钟没关系, 就算是3分钟, 你在读数据, 也有可能进程被强退.. 难道程序就崩了? 不懂得判断重连?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
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;
----------------------------------------------
-
|
作者: |
|
2022/1/18 8:51:37 |
6楼: |
30分钟空闲还不断开连接的话早被人打死了 :-)
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2022/1/18 9:13:03 |
7楼: |
如果没特殊要求, 可以在重载query方法, 里面写try. 异常了就提示断连, 让用户选择是否重连.. 或者自动连接.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2022/1/18 10:41:34 |
8楼: |
ADO在某些情况下是会空闲断开的,没找到具体原因。每5分钟去 getdate() 后好很多。ado从来就没有一个很好的断开重连好用的功能。firedac现在好很多
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
|
作者: |
|
2022/1/18 13:56:07 |
9楼: |
设备管理器-网【络】适配器-网卡-电源管理,把允许计算机关闭此设备以节约电源 选项关闭。程序长时间空闲,有可能网【卡】就休眠了,连接肯定就断了。
----------------------------------------------
-
|
作者: |
|
2022/1/18 14:06:47 |
10楼: |
新建一个 ConnectionObject
----------------------------------------------
-
|
作者: |
|
2022/1/18 15:03:01 |
11楼: |
firedac在vcl上一样有这样的问题。但在中间件好像没有。 可在相关连接的error事件中重连
----------------------------------------------
-
|
作者: |
kwer (★★★★★) |
★☆☆☆☆ |
-
|
普通会员 |
|
2022/1/18 15:13:14 |
12楼: |
长连接是蠢方案,短连接同样也好不到哪里去。。。socket天生就是一个包一个包的收发,TCP无非是多了一个连接判断而已。。。所以稍好的方案就是长短结合,比如现代的浏览器都改成长短结合的连接方式。
----------------------------------------------
==========-==========-==========-==========-========== 多隆, 给我备一匹最快的马, 我有事要走先~~~ ==========-==========-==========-==========-==========
|
作者: |
|
2022/1/18 19:20:31 |
13楼: |
firedac vcl空闲连接超时,不须要写任何代码,你只要操作一下设备就会自动唤醒。 但服务型的vcl就麻烦了,你写的程序因为空闲连接超时不运行了,而这时没有任何人去唤醒他
----------------------------------------------
-
|
|