查询调用存储过程回滚事务错误

时间:2016-05-10 20:47:29

标签: sql-server-2008

执行查询(查询也调用存储过程)会抛出错误:

  

ROLLBACK TRANSACTION请求没有相应的BEGIN TRANSACTION。

但是,在SQL Server中执行存储过程不会产生任何错误。

存储过程在结束后回滚:

begin
set nocount on;
    begin transaction
    begin try
      ....
      commit transaction;
    end try
    begin catch
        if (@@trancount  > 0) begin
            rollback
        end;
    end catch
end;

1 个答案:

答案 0 :(得分:0)

您需要修复确切的错误消息

use tempdb
begin
set nocount on;
begin transaction
begin try
  create table foo1 (i int);
  commit transaction;
end try
begin catch
    if (@@trancount  > 0) begin
        select ERROR_NUMBER();
        select ERROR_MESSAGE();
        rollback
    end;
end catch
end;