本帖最后由 nfclass 于 2012-05-05 12:44:42 编辑

解决方案 »

  1.   

    多半是因为全局的变量@@TRANCOUNT  被置为0BEGIN TRANSACTION 语句将 @@TRANCOUNT 加 1。ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减到 0,但 ROLLBACK TRANSACTION savepoint_name 除外,它不影响 @@TRANCOUNT。COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1
      

  2.   

    begin transaction是开始事务
    commit transaction是结束事务
    如果在他们中间出现retrun和ROLLBACK就会报错!
      

  3.   


    我的意思是BEGIN..END没有一一对应。
      

  4.   

    错误信息如标题所示,从事务开始到结束,中间出现了错误或者其他导致事务没有执行完毕,所以提示缺少commit或rollback transaction。
    当出现这个错误时着重检查事务内部的代码,导致此错误的可能原因:
    1.可能在事务中间出现return语句导致存储过程跳出,没有继续往下执行..
    2.可能在事务开始到结束这中间出现sql语句的错误,或者其他。比如写错表名,写错sql语句等。
      

  5.   


    BEGIN..END没有一一对应,存储过程检测就会保存,不会被执行的。
    return语句导致存储过程跳出?我没写return。
    写错表名,写错sql语句? 的确是写错语句了,导致在中间就结束了,没有执行到rollback 。这个问题有办法解决不锁死进程吗?