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。 |