我正在使用SQL Server 2014;我的存储过程将是嵌套的事务过程,因此它将调用几个在其中具有事务的存储过程。如果其中一个内部存储过程遇到错误,则将全部回滚,例如
Begin Try
Begin Tran
Exec Stored Proc 1 (with begin tran inside)
Exec Stored Proc 2 (with begin tran inside)
Exec Stored Proc 3 (with begin tran inside)
Exec Stored Proc 4 (with begin tran inside)
Exec Stored Proc 5 (with begin tran inside)
Commit Tran
End Try
Begin Catch
Catch exception then roll back tran
End Catch
问题是执行内部存储过程不匹配后的事务计数,但是如果我没有在内部存储过程中打开事务,它就不会回滚。谁能给我一些建议?
答案 0 :(得分:2)
SQL Server数据库引擎会忽略提交内部事务。根据最外层事务结束时采取的操作,提交或回滚事务。如果提交了外部事务,则还会提交内部嵌套事务。