1。 用表变量代替临时表
2。 你的事务处理没有用
    要么在begin tran 前边加上set xact_abort on
    要么用if @@error=0
          begin
               commit tran
          end
          else
          begin
               rollback tran
               raiserror('错误信息',12,1)
          end

解决方案 »

  1.   

    如果在一个sp里面用临时表,也没有什么不好,起码他比表变量好的地方就是可以随时改变表结构,
    而且局部临时表,不用担心并发问题,session结束,自动释放!把update,insert等等会产生更新锁,排他锁的code包在trasaction里面,每做一步都设置个点,if @@error <> 0就goto到出错处理,rollback并且返回错误信息!