SET XACT_ABORTコマンドの目的を理解しています。
SET XACT_ABORT が ON の場合、Transact-SQL ステートメントで実行時エラーが発生すると、トランザクション全体が終了し、ロールバックされます。
SET XACT_ABORT が OFF の場合、場合によっては、エラーを発生させた Transact-SQL ステートメントのみがロールバックされ、トランザクションは処理を続行します。エラーの重大度によっては、SET XACT_ABORT が OFF の場合でも、トランザクション全体がロールバックされる場合があります。オフがデフォルト設定です。
一般に、エラーが発生した場合にトランザクションの処理を続行したいシナリオよりも、エラーが発生した場合にトランザクション全体をロールバックしたいシナリオよりも数が多くなります。これは、DBA やブログがSET XACT_ABORT ON
一貫性のないトランザクションに遭遇しないように継続することを推奨しているのをよく耳にするためです。結果。SET XACT_ABORT ON
テンプレート化されたコードの一部として、すべてのストアド プロシージャにも が含まれているのを見てきました。
質問:
ユース ケースのほとんど
XACT_ABORT
が. をデフォルトにすると、SQL Server トランザクション処理にオーバーヘッドが追加されましたか?ON
OFF
XACT_ABORT
ON
この
SET XACT_ABORT
コマンドは、現在のセッションのみに影響します。この画像に示すように、 SSMS のデフォルトをSET XACT_ABORT ON
fromにすることができることはわかっ ています。これらの手順については、すべての手順で繰り返す必要があります。データベースレベルで設定できる方法はありますか? グローバルに設定でき、毎回心配する必要がない他の方法はありますか?SSMS > Tools > Options > Query Execution > SQL Server > Advanced
SET XACT_ABORT ON
XACT_ABORT
ON
XACT_ABORT