我有一个以下类别的程序
BEGIN TRY
BEGIN TRAN
...transactins A....
BEGIN TRY
.... Transaction B ....
END TRY
BEGIN CATCH
.... Set variables and print messages ....
END CATCH
....Transaction C
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
...Transaction D
END CATCH
事务B抛出一个错误,因此进程进入一个不可服务的状态并抛出以下错误。我检查了XACT_STATE()值,它是-1
Msg 3930,Level 16,State 1,Procedure xxxxxxxx,Line 70 当前事务无法提交,也无法支持写入日志文件的操作。回滚交易。
有没有其他方法可以通过跳过事务B和执行事务C
来解决这个问题答案 0 :(得分:1)
使用事务的全部意义在于其中的操作全部成功或全部失败。如果您要将Transaction C
与Transaction B
失败的影响隔离开,请对每个操作使用单独的BEGIN TRAN/COMMIT/ROLLBACK
操作。