嵌套事务中TSQL抛出错误回滚(Rollback of nested transaction thr

2019-09-20 20:05发布

这里是什么,我想实现的一个片段。 我有一个嵌套事务“TRAN2”,我不能回滚

SELECT 'Before', * FROM [table] WHERE field ..

BEGIN TRAN tran1
UPDATE [table] set field ... WHERE field ..

 BEGIN TRAN tran2
    SELECT 'During', * FROM [table] WHERE field ..
    select @@trancount as 'transactioncount'

  rollback tran tran2

rollback TRAN tran1
SELECT 'After', * FROM [table] WHERE field ..

是抛出我这个错误

消息6401,级别16,状态1,行13
不能回滚TRAN2。 该名称的任何事务或保存被发现。

然而@@trancount是给我2个交易在该点

Answer 1:

而不是begin trans tran2 ,使用save transaction tran2

这将创建外部事务,您可以回滚到内的保存点。



文章来源: Rollback of nested transaction throwing error in TSQL