用Sockconnection连接Client与Server,运行极不稳定!求助。谢谢!(200分)

  • 主题发起人 主题发起人 林海
  • 开始时间 开始时间

林海

Unregistered / Unconfirmed
GUEST, unregistred user!
开发环境:NT4+NT4SP6;D4+PACK3
程序结构:Client-----Sockconnection-----Server-----Access
运行环境:NT4+NT4SP6+SERVER,WIN98+CLIENT;局域网,5台左右客户机同时运行
问题:运行极不稳定,客户机在数据更新时有时提示无效的数据库别名。这时只好先关
闭全部客户程序,然后再重新运行方可。这种情况每天会出现10次!
 
我使用TSCOKETCONNECTION来做没什么问题啊。可能是ACCESS的问题吧。
而且客户端操作时是不直接与数据库别名打交道的啊。估计是你的应用服务器写得不好!
 
换成SQL SERVER试试
 
听说SQL设置复杂,不敢用。
我想也是SERVER端服务器程序的问题,不过,我的服务器程序并不复杂,
也不知道从何从着手修改SERVER端的程序。
 
你应该换sql,access毕竟是文件型数据库,适合桌面,而你的应用有大量的并发,在数据
量较大的情况下100m左右 access就更容易出问题 而且速度会非常慢
 
看来除了SQL,没有简单的解决方案了!
 
Database的handleShare=True
 
Database的handleShare已经设为True了,不能解决问题。
从运行状况推测,似乎数据库连接异常中断,如何能保证
与数据库的连接保持?
 
与Access连接用ADO,或换成BDE试试。不过建议改用Oracle数据库。
 
林海:
Sockconnection在NT上只有一个端口(211)被系统监听,如果一对一的话(只有一个客户)
连接是没有问题的。
但如果多个客户同时连接并请求一定量的数据,那么BUFFER中就会拥挤不堪,这时就会出现
“超时”,提示无效的数据库别名。
解决的办法很多,但都需要写大量的程序。常见的如下:
1。在SERVER端写一个排队组件,按请求的次序读写数据。(缺点:无法回滚事物)
2。在CLIENT端发出请求更新前,先查询服务器状态,再连接更新。(缺点:慢)
3。想法上同1,但使用POOLING(ACCESS不能)。
4。让每个CLIENT使用一个端口,SERVER(NT)监听这些端口。(缺点:服务器开销太大)
建议你在D5+ACCESS2000下重新编译,在测试。
 
多人接受答案了。
 
后退
顶部