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。