请教:网络服务程序使用ADO,多线程并发访问SQL-SERVER时,该用哪种模式?

huangbeyond 2004-10-21 11:30:37
我手上正在写一个网络服务程序(设为进程a),使用IOCP(完成端口),接收远端客户机(进程b)的自定义数据,通过ADO,转发为对内网一台SQL-SERVER的数据请求。目前的模式是,全部对SQL-SERVER的数据请求,都使用同1个ADOConnect。这个模式,在压力测试和进程b出现异常的情况下,经常导致那1个ADOConnect出现“数据库访问异常”,我很纳闷:
1。并发多线程共用1个ADOConnect对SQL-SERVER进行访问(其中一些调用还涉及‘事务操作’)时,是否非常容易出现ADO异常(至少我经常遇上了)?

我打算换个模式,用多线程配合多个ADOConnect来访问SQL-SERVER:用IOCP(完成端口)来调度各个ADOConnect,并分配给每1个当时激活的线程使用。这种用法,是不是这种程序的流行用法?我似乎见论坛的旧贴里有人提过,但是不敢肯定,因为目前项目压力很大,时间上禁不起折腾。

我的这个网络服务程序也同时兼容ACCESS做数据库的情况。ACCESS和SQL-SERVER的ADO使用差别,好像是:ACCEES在1个ADOConnect内支持事务嵌套,但是却不能在1个进程内对同1个mdb文件建立多个ADO连接;而SQL-SERVER在1个ADOConnect内不支持事务嵌套,却能在1个进程内建立多个A并发DO连接。

2。情况是这样么?

请各位有实际开发经验的朋友们帮帮忙,给个比较肯定的答复,或者,给点经验。

(喜欢分,并且给我关键信息的朋友,如果在乎分,我可以再开几个贴,我可用分还是比较充裕的)

先谢谢大家了!!!
...全文
281 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DebugXP 2004-10-25
  • 打赏
  • 举报
回复
SQL Server+ADO不支持事务嵌套(OLE DB驱动)
我认为应该在多线程中用多个ADOConnect
或者当需要使用数据库时,创建一个ADOConnect,用完后Close掉。
captainwh 2004-10-25
  • 打赏
  • 举报
回复
出错应该还是线程同步的问题, 进程b影响到了数据库操作这个是不应该的
icelight 2004-10-25
  • 打赏
  • 举报
回复
要不你用信号灯Semaphore, 限定同一时间最多只能有10个线程访问ADOCONNECTION.
若运行稳定, 逐步提高同一时间允许访问的线程数, 直到出错为止, 在性能与稳定间找一个平衡点.
huangbeyond 2004-10-24
  • 打赏
  • 举报
回复
难道真的没有人救我??????????????
xindao_wang 2004-10-22
  • 打赏
  • 举报
回复
mark
jazy 2004-10-22
  • 打赏
  • 举报
回复
顶,学习
huangbeyond 2004-10-22
  • 打赏
  • 举报
回复
高手们,怎么都躲起来啦,你们在哪里啊。。。。。。。。。?
rotus 2004-10-22
  • 打赏
  • 举报
回复
mark ,关注
laker_tmj 2004-10-22
  • 打赏
  • 举报
回复
我覺得你所說以下情況可能是,多個線程在同一時間內使用ADOConnect向數據庫加入數據,
你是否可以用CRITICAL_SECTION 臨界區來保證同一時間只有一個在向數據庫加入數據?


在压力测试和进程b出现异常的情况下,经常导致那1个ADOConnect出现“数据库访问异常”,我很纳闷:
sony19791015 2004-10-22
  • 打赏
  • 举报
回复
支持
关注
zxhcloth 2004-10-22
  • 打赏
  • 举报
回复
我不知道你是怎么写的,我在这里说一说我的看法
其实不管是你先前的那个模式还是你现在想的那个模式,只要保证在同一时间只有一个线程访问ADOCONNECTION,这样就不会出现你那种情况了
huangbeyond 2004-10-22
  • 打赏
  • 举报
回复
首先感谢大家的热心.


“保证在同一时间只有一个线程访问ADOCONNECTION”
这样做的话,也比较容易实现。但是这个网络服务程序的“数据库访问的整体性能和效率”就非常低下了,因为这样,SQL-SERVER(在另外一台机器上)的并发访问性能就没有利用上。
huangbeyond 2004-10-21
  • 打赏
  • 举报
回复
我先顶了,希望各位帮忙。。。。。。


这几天都夜不能寐了,中国的软件事业啊,我又爱又恨了,呵呵。。。。。。。。。。

4,012

社区成员

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

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