9

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テンプレート化されたコードの一部として、すべてのストアド プロシージャにも が含まれているのを見てきました。

質問:

  1. ユース ケースのほとんどXACT_ABORTが. をデフォルトにすると、SQL Server トランザクション処理にオーバーヘッドが追加されましたか?ONOFFXACT_ABORTON

  2. このSET XACT_ABORTコマンドは、現在のセッションのみに影響します。この画像に示すように、 SSMS のデフォルトをSET XACT_ABORT ONfromにすることができることはわかっ ています。これらの手順については、すべての手順で繰り返す必要があります。データベースレベルで設定できる方法はありますか? グローバルに設定でき、毎回心配する必要がない他の方法はありますか?SSMS > Tools > Options > Query Execution > SQL Server > Advancedここに画像の説明を入力SET XACT_ABORT ONXACT_ABORTONXACT_ABORT

4

1 に答える 1

7

XACT_ABORT ONコマンドは少しわかりにくいですが、サーバー レベルでグローバルな既定の接続設定として設定できます。

EXEC sys.sp_configure N'user options', N'16384'
GO
RECONFIGURE WITH OVERRIDE
GO

詳しくはこちらをご覧ください。

このオプションは、SSMS オブジェクト エクスプローラー > サーバー プロパティ > 接続からも設定できます。

ここに画像の説明を入力

于 2017-04-04T07:24:36.427 に答える