ARITHABORT 和 ARITHIGNORE 设置为 ON 时的行为

如果 ARITHABORT 和 ARITHIGNORE 查询处理选项均设置为 ON,则优先采用 ARITHABORT 的设置。

ARITHABORT 和 ARITHIGNORE 是两个独立的选项;将其中一个设置为 ON 时,另一个不会自动设置为 OFF。例如,如果应用程序包含下列语句,则这两个选项均设置为 ON:

SET ARITHABORT ON
SET ARITHIGNORE ON
GO

在存储过程中执行 SET 语句时,新设置仅在过程结束之前有效。过程结束之后,该选项的连接设置将恢复为执行过程前的状态。

ANSI_WARNINGS 设置的影响

ANSI_WARNINGS 设置影响查询处理器的行为,与 ARITHABORT 和 ARITHIGNORE 的当前设置无关。

例如,如果 SET ARITHABORT 或 SET ARITHIGNORE 设置为 OFF 且 SET ANSI_WARNINGS 设置为 ON,MicrosoftSQL Server 在遇到被零除或溢出错误时仍返回错误消息。

下表对此行为进行了总结。

ARITHABORT

ANSI_WARNINGS

行为

ON

ON

仅中止语句。

ON

OFF

中止批处理。

OFF

ON

仅中止语句。

OFF

OFF

继续;值为 NULL。