由于SQL语句失误,sql server数据库出现“rollback transaction 请求没有对应的 begin transaction”错误,可能是出

  • 主题发起人 主题发起人 litian2
  • 开始时间 开始时间
那说明你的SQL语句有问题呀
 
我在用的有关trans的写法,也不知是否有错请高手指教.<br>procedure BeginTrans;<br>begin<br>&nbsp; try<br>&nbsp; if Gconn.Connected then<br>&nbsp; if not Gconn.InTransaction then &nbsp; <br>&nbsp; &nbsp; &nbsp; Gconn.BeginTrans;<br>&nbsp; except<br>&nbsp; end;<br>end;<br><br>procedure CommitTrans;<br>begin<br>&nbsp; if Gconn.InTransaction then<br>&nbsp; &nbsp; &nbsp;Gconn.CommitTrans;<br>end;<br>procedure RollbackTrans;<br>begin<br>&nbsp; try<br>&nbsp; if Gconn.InTransaction then<br>&nbsp; &nbsp; &nbsp; Gconn.RollbackTrans;<br>&nbsp; except<br>&nbsp; end;<br>end;
 
跟踪一下sql server
 
没看你语句 肯定是你的一堆 begin tran 和 roll back 语句 数量不对应<br>或者 你的 某个 roll back 语句对应的 begin tran 语句 已经被你的 if 语句提前屏蔽了<br>后面你要 roll back的时候 就没有对应的 begin tran了<br>检查你的逻辑 并保证 每个逻辑都有完整的begin tran 和 roll back 对子
 
try<br>dbconn.BeginTrans;<br>处理语句;<br>dbconn.CommitTrans;<br>except<br>begin<br>&nbsp;dbconn.RollbackTrans<br>end;
 
回滚不成功的话,会有这样的结果,有些表更新了,有些表更新不成功。数据不一至了。
 
簡單的說就是當前不在事務狀態。。。如沒有啟動事務,或者事務已經Commit而結束了。
 
后退
顶部