2

ここに私が達成しようとしていることのスニペットがあります。ネストされたトランザクション「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つのトランザクションが発生しています

4

1 に答える 1

3

の代わりにbegin trans tran2、 を使用しますsave transaction tran2

これにより、ロールバックできる外部トランザクション内にセーブ ポイントが作成されます。

于 2012-08-05T23:53:42.077 に答える