私はSET XACT_ABORTコマンドの目的を理解する:のTransact-SQLステートメントが 実行時エラーが発生した場合、SET XACT_ABORTがONの場合SQL ServerはXACT_ABORTをデフォルトでOFFにしていますか?グローバルにONに設定できますか?
は、トランザクション全体が終了し、ロールバックされます。
SET XACT_ABORTがOFFの場合、エラーを発生させたTransact-SQL ステートメントのみがロールバックされ、トランザクション が処理を続行する場合があります。エラーの重大度に応じて、SET XACT_ABORTがオフであってもトランザクション全体がロールバックされることがあります( )。 デフォルト設定はOFFです。一般的に
、私は頻繁に維持するために推奨DBAやブログを聞くため、エラーが、1が誤りならば、トランザクション全体をロールバックしたいシナリオで劣勢ことになる場合は、1つのトランザクションの処理を続行したいと思うのシナリオSET XACT_ABORT ON
を使用して、一貫性のないトランザクション結果への実行を回避します。テンプレートコードの一部としてSET XACT_ABORT ON
のストアドプロシージャもすべて表示されています。
Quesions:OFF
にそれをデフォルトにリードSQL Serverを持っているだろうか
ユースケースのほとんどは
ON
するXACT_ABORT
が必要な場合は、?XACT_ABORT
〜ON
がSQL Serverのトランザクション処理にオーバーヘッドを追加しましたか?SET XACT_ABORT
コマンドは、現在のセッションにのみ影響します。私は、この画像に示すように、SSMS > Tools > Options > Query Execution > SQL Server > Advanced
からSET XACT_ABORT ON
にSSMSをデフォルトにすることができることを知っています。 しかし、これはSSMSを介して実行されているSQL文のみに限定され、アプリケーションコード/ SSISパッケージを通じて呼び出されるストアドプロシージャは役に立ちません。それらの手順のために、私はまだすべての手順でSET XACT_ABORT ON
を繰り返す必要があります。どのような方法がありますON
データベースレベルで設定することはできますか?他の方法でをグローバルに設定でき、毎回それを心配する必要はありませんか?
を、好きなときにいつでもアクティブな接続を介してSET XXX ONを/ OFF発行できるとオプションがに適用されますセッション全体 –
[なぜSET XACT_ABORTはデフォルトの動作ではありませんか?](http://stackoverflow.com/questions/7956856/why-isnt-set-xact-abort-on-the-default-behavior) –