9

sp に try catch ブロックがあり、try に挿入ステートメントだけがあります。pk 違反の場合はキャッチ チェック エラー コード、違反の場合は更新を行います。しかし、時々「現在のトランザクションはコミットできず、ログファイルに書き込む操作をサポートできません。トランザクションをロールバックしてください。

バッチの最後に、コミット不可能なトランザクションが検出されました。トランザクションはロールバックされます。」ということで、xact_abort を追加しましたが、「EXECUTE 後のトランザクション数は、BEGIN ステートメントと COMMIT ステートメントの数が一致していないことを示しています。」というメッセージが表示され続け、これを見つけました。 http://www.ashishsheth.com/post /2009/08/14/Set-XACT_ABORT-ON-and-TryCatch-block-in-Sql-Server-2005.aspx

これが本当なら。xact_abort をオンにして try ブロックにエラーがある場合、catch コードは実行されませんか?

4

2 に答える 2