MIDAS事务问题(200分)

  • 主题发起人 主题发起人 horaer
  • 开始时间 开始时间
H

horaer

Unregistered / Unconfirmed
GUEST, unregistred user!
请问以下问题该如何解决?或者有没有更好的方法?
1、如何去掉应用服务器自动启动的事务(就是客户端调用ApplyUpdates()函数时不想使用begin
TRAN与COMMIT TRAN)。
2、如何截获客户端传过来的Sql语句并手工处理。
3、如果我在客户端的ApplyUpdates()内调用存储过程保存数据,而存储过程执行时出现运行期错误,我用事件探查器跟踪发现,系统开始事务(begin
TRAN)但一直没有提交事务或者回滚,直到所有客户端都退出(或者断开应用服务器)的时候,数据库才从刚才的那个begin
TRAN开始回滚,这样一来,就出现数据丢失了。请问有没有解决的办法?
谢谢。
 
其实三个问题是同一个问题。
 
设置DataSetProvider的属性即可
 
我觉得应该是楼主程序设计上有问题
就我使用到现在,只要不是程序的错误,还没发现事务不完整的情况
 
TO:lmxcyx
请问如何设置?
TO:stuwe
程序只是常规调用cds.ApplyUpdates()而已。
 
在线等待之中。。。。。。
 
我们的程序不管是applyupdates还是中间层提交,事务都很正常
只要程序逻辑不错误,事务都没问题
应该是跟你中间层设置有关
 
TO:stuwe
如果没有出现运行期错误的话,事务是正常的。
程序逻辑没有错,关键在于存储过程执行过程中出现了错误。
 
有没有朋友遇到类似的问题?
 
如果是存储过程运行过程出现错误,那存在过程里面就要处理好错误,错误后抛出导常,肯定没问题
 
不要使用ApplyUpdates()函数,
这个东西漏洞百出,
根本用不了,
建议你把客户端的数据打包,
可通过CDS_Client.Data传给服务器端的CDS_Server.Data(也可以传SQL语句),
再在服务器端进行分析处理操作,
写在事务之内就可以了,
把事情尽量放在中间层来做,
客户端只用来发送指令和显示,
 
TO:Neo_leaf
请问,有没有应用服务器对Delta分析处理源代码,能否发份给我,谢谢。
horaer@gmail.com
 
又或者如何去掉Delphi三层默认的begin
Tran、CommitTran。
 
关掉自动启用事务的方法:
在Provider.pas单元,把TDataSetProvider.InternalApplyUpdates函数中的
“FTransactionStarted := not IProviderSupport(DataSet).PSInTransaction;”
改为
“FTransactionStarted := False;”
即可。
 
后退
顶部