ARITHABORT と ARITHIGNORE が ON に設定されたときの動作
クエリ処理オプションの ARITHABORT と ARITHIGNORE がどちらも ON に設定されていると、ARITHABORT が優先されます。
ARITHABORT と ARITHIGNORE は 2 つの異なるオプションです。どちらか一方を ON に設定しても、もう一方が自動的に OFF に設定されるわけではありません。たとえば、アプリケーションに次のステートメントが指定されている場合、2 つのオプションはどちらも ON に設定されます。
SET ARITHABORT ON
SET ARITHIGNORE ON
GO
SET ステートメントがストアド プロシージャで実行された場合、新しい設定はプロシージャが終了するまでの間のみ有効となります。プロシージャが終了すると、そのオプションの接続の設定はプロシージャの実行前の状態に戻ります。
ANSI_WARNINGS 設定の効果
ANSI_WARNINGS 設定は、ARITHABORT と ARITHIGNORE の現在の設定とは無関係に、クエリ プロセッサの動作に影響を与えます。
たとえば、SET ARITHABORT または SET ARITHIGNORE が OFF に設定されていて、SET ANSI_WARNINGS が ON に設定されている場合、Microsoft SQL Server では、除算エラーまたはオーバーフロー エラーが発生した際に、依然としてエラー メッセージが返されます。
次の表は、その動作をまとめたものです。
ARITHABORT |
ANSI_WARNINGS |
動作 |
---|---|---|
ON |
ON |
Abort ステートメントのみ。 |
ON |
OFF |
Abort バッチ。 |
OFF |
ON |
Abort ステートメントのみ。 |
OFF |
OFF |
続行。値は NULL。 |