一个关于MTS/COM+的事务和并发问题 200分相送(200分)

  • 主题发起人 主题发起人 Rannce
  • 开始时间 开始时间
R

Rannce

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi5开发MTS/COM+组件,Alpha组件的事务类型是需要事务,其中一个方法Alpha.FuncA是这样的:读取表TableA的部分数据到一个TClientDataSet中,修改或者删除其中的一些记录,并加入另外一些记录,然后保存这个TClientDataSet的Delta。后台数据库是SQLServer2000。
单独执行Alpha.Func没有问题,但是并发时会在保存Delta时发生死锁。
初步理解为:当FuncA读取TableA时就对TableA加了一个共享锁,而只有保存Delta后才撤除这个共享锁。而其他用户调用FuncA时,也在读取TableA时加锁,从而在保存Delta时相互等待。
请教各位大虾,这样的理解对吗?真正的原因是什么?如何解决掉类似的并发问题?通常的针对MTS/COM+并发的解决方案是怎样的?
 

Similar threads

S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
后退
顶部