0

以下のような手順があります

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

メッセージ 3930、レベル 16、状態 1、プロシージャ xxxxxxxx、行 70 現在のトランザクションをコミットできず、ログ ファイルに書き込む操作をサポートできません。トランザクションをロールバックします。

トランザクションBをスキップしてトランザクションCを実行する方法でこれを克服する他の方法はありますか

4

1 に答える 1

1

トランザクションを使用することの要点は、トランザクション内の操作がすべて成功するか、すべて失敗することです。Transaction Cの障害の影響から切り離したい場合はTransaction B、それぞれに別のBEGIN TRAN/COMMIT/ROLLBACK操作を使用してください。

于 2011-11-10T16:39:01.713 に答える