求助:C/S程序使用ADO远程连接,几分钟不操作客户端程序会断开跟远程数据库的连接

chenchen_2011 2013-01-07 03:49:23
环境:
C/S两层架构的程序
数据库:SQL2008
ADO连接:ADOConnection
应用:大部分情况下是局域网应用,但有小部分的外网远程访问需求,部分客户端是需要在外地远程访问数据库服务器

如果是局域网内访问,打开窗体很长时间不动再接着操作,程序运行没问题

如果改成是从远程访问数据库服务器,1~2分钟内正常操作正常,如果在打开数据编辑窗体后,中间间隔几分钟没有处理,晚点再接着录入数据,就会报ADO错误:cannot perform this operation on a closed dataset,这种情况下只能退出系统,重新登陆

谢谢
...全文
477 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangw198636 2013-01-16
  • 打赏
  • 举报
回复
你可以做个服务程序,监听数据库连接标志。或者像个session一样都行。不过如果外网网络信号弱的话还是使用短会话,这样也可以减小服务器压力。
lyhoo163 2013-01-16
  • 打赏
  • 举报
回复
做一个心跳,定时连接一次。仅上传几个字符数据,应该不占多少资源。
zbdzjx 2013-01-14
  • 打赏
  • 举报
回复
一分鐘一次select getdate()資源應該消耗不多的吧。
softneo 2013-01-11
  • 打赏
  • 举报
回复
不管你是用程序连远程电脑还是用Windows自带的远程连接,只要一段时间内不操作都会断掉的(估计这样的设计初衷是好的)。 我觉的可以这样,你可以在程序中稍微控制一下,只要程序与远程数据库有动作,我想应该不会断掉的。
haitao 2013-01-07
  • 打赏
  • 举报
回复
捕捉此错误,自动重连再重新执行,无须用户干预
xhz8000 2013-01-07
  • 打赏
  • 举报
回复
使用有外网的就是动态创建连接! 内网的就按原来的
chenchen_2011 2013-01-07
  • 打赏
  • 举报
回复
目前所有的数据操作都是使用数据模版上的一个固有ADOConnection1进行连接,如果更改成每次执行SQL操作时进行动态创建ADOConnection,这样是否可行呢?
xhz8000 2013-01-07
  • 打赏
  • 举报
回复
不如做一些短连接算了! 虽然效率低些! 但是实用
chenchen_2011 2013-01-07
  • 打赏
  • 举报
回复
客户端差不多上百,有内网的,有外网的,如果不停的定时查询那这个消耗也蛮大啊
xiaojun5556 2013-01-07
  • 打赏
  • 举报
回复
写个简单的查询,一会执行下。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧