关于多线程共享ADO连接的问题?
各位高手,请看:
我本来利用了老外封装的一个ADO类(http://www.codetools.com/database/caaadoclass1.asp,有兴趣的可以去看看,使用还是非常方便的)开发了一个多线程的网络服务程序a.exe,(因为听说ADO不是线程安全的,所以认为多线程不能共享连接,不知道认识是否错误?)现在的运行方式是处理一个客户请求开启一个线程,每个线程都会打开一个数据库连接,(线程运行结束的时候,就会关闭连接)。开始运行较为稳定,运行一两天之后,打开连接就失败了,重起服务程序之后,就可以连接成功。另外,该服务程序a.exe需要查询、插入、更新数据库中的表,同时另一个程序b.exe需要更新同样的表,web服务器也要通过ASP查询、插入这些表。问题如下:
1)导致连接失败的原因是什么呢?打开的连接太多?(最多的时候a.exe有六个线程同时运行,但是他们会频繁的打开、关闭连接)。听别人说“连接池”可以解决打开连接太多的带来的问题,哪位高手解释一下“连接池”如何实现?
2)b.exe在更新表中的记录的时候,出现错误,大意如下:”0x80004005错误,spid 65作为事务死锁的牺牲品,被禁止了,请重新运行事务”,是不是进程间访问数据库互斥操作导致的?如何解决呢?a.exe和b.exe采用不同的数据库用户登录,也不行。事务死锁会不会导致连接失败呢?
3)DB Connection 和 Session有何不同?二者的关系是什么呢?如何共享Connection呢?如何ADO编程实现?
我已经查阅了很多资料,一直没能解决问题,请各位高手指点几句。
因为我是新手初来查到,分数有限,等有分了,再加分。