
説明/参照:
ボックス1:SET XACT_ABORT ON。
XACT_ABORTは、Transact-SQLステートメントでランタイムエラーが発生したときにSQL Serverが現在のトランザクションを自動的にロールバックするかどうかを指定します。
SET XACT_ABORTがONの場合、Transact-SQLステートメントで実行時エラーが発生すると、トランザクション全体が終了してロールバックされます。
ボックス2:IF(XACT_STATE())= -1
XACT_STATEの値が-1の場合、現在の要求にはアクティブなユーザートランザクションがありますが、トランザクションがコミット不可能なトランザクションとして分類される原因となったエラーが発生しました。要求はトランザクションをコミットすることも、セーブポイントにロールバックすることもできません。トランザクションのフルロールバックのみ要求できます。
ボックス3:IF(XACT_STATE())= 1
XACT_STATEの値が1の場合、現在の要求にはアクティブなユーザートランザクションがあります。要求は、データの書き込みやトランザクションのコミットなど、あらゆるアクションを実行できます。
参考文献:
https://msdn.microsoft.com/ja-jp/library/ms188792.aspx
https://msdn.microsoft.com/ja-jp/library/ms189797.aspx