You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server中是否建议始终启用Arithabort?

是否应该在SQL Server中始终启用ARITHABORT?

ARITHABORT是SQL Server的一个SET选项,作用是控制查询执行中遇到算术错误(如除以零、数据溢出)时的行为:启用(SET ARITHABORT ON)时会立即终止查询并返回错误;禁用时仅返回警告,查询继续执行,错误计算结果会返回NULL。

官方与生产环境的通用建议

SQL Server官方文档明确推荐,绝大多数生产环境的应用应该始终启用ARITHABORT,尤其是当你使用以下特性时:

  • 索引视图
  • 计算列上的索引
  • OPTIMIZE FOR等查询提示

这些特性要求ARITHABORT必须为ON才能正常工作,或者才能生成最优的执行计划。此外,统一的SET选项设置有助于提升执行计划缓存的复用率,避免因选项不一致导致重复生成计划浪费资源。

为什么有时启用后效果不佳?

你遇到的“效果不尽人意”通常不是ARITHABORT本身的问题,而是其他因素导致的:

  • 隐藏的代码错误暴露:之前禁用ARITHABORT时,代码中的算术错误(比如未处理的除以零)被掩盖,仅返回NULL而不报错;启用后这些错误直接触发终止,导致应用报错,让你误以为是ARITHABORT的问题。
  • 执行计划变化:ARITHABORT是影响执行计划生成的参数之一,切换选项后可能生成不同的执行计划。如果新计划性能下降,通常是因为统计信息过时、查询本身存在优化空间,而非ARITHABORT的问题。

实践中的处理建议

  • 生产环境统一配置SET ARITHABORT ON,保持所有数据库连接的SET选项一致。
  • 若启用后出现报错,优先排查并修复代码中的算术错误,而不是禁用ARITHABORT。
  • 若遇到执行计划性能问题,先更新表的统计信息,再检查查询逻辑或索引是否需要优化,必要时可使用查询提示调整计划。

内容的提问来源于stack exchange,提问作者supercrash10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:00:24