SET ARITHIGNORE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库Microsoft Fabric 中的 SQL 数据库

SET ARITHIGNORE 设置控制查询是否返回算术溢出错误或除以零错误的错误信息。 该 SET ARITHIGNORE ON 设置会抑制“发生零除法”或“发生算术溢出”等消息。

Transact-SQL 语法约定

语法

SQL Server、Azure SQL 数据库、Microsoft Fabric Data Warehouse、Microsoft Fabric SQL数据库的语法


SET ARITHIGNORE { ON | OFF }

Azure Synapse Analytics 和 Analytics Platform System (PDW) 的语法


SET ARITHIGNORE OFF

备注

  • 如果 和 都是且发生算术错误,则SET ARITHIGNORE当 是 OFF时会出现警告消息,算术运算结果为 NULLOFFSET ANSI_WARNINGSSET ARITHABORT
  • 如果 SET ARITHABORT 和 都存在OFF且发生算术错误,则SET ARITHIGNORE当 是 ON,且算术运算结果为 NULL时,则不SET ANSI_WARNINGS会出现警告消息。

ARITHIGNORE 设置仅控制查询是否返回错误信息。 SQL 数据库引擎 在涉及溢出或除以零错误的计算中会返回NULL,无论该设置如何。 该设置不会影响在 、 UPDATEDELETE语句中INSERT发生的错误。

如果 SET ARITHABORTSET ARITHIGNOREOFF,且 SET ANSI_WARNINGSON,查询在遇到除以零或溢出错误时仍返回错误信息。 当 是ON(默认值)时ANSI_WARNINGS,设置 没有ARITHABORT功能性影响。

SET ARITHIGNORE设置是在执行或运行时设置的,而不是在分析时设置的。

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

查看当前设置 ARITHIGNORE

要查看当前的设置 ARITHIGNORE,请执行以下 T-SQL 查询。

DECLARE @ARITHIGNORE VARCHAR(3) = 'OFF';  
IF ( (128 & @@OPTIONS) = 128 ) SET @ARITHIGNORE = 'ON';
SELECT @ARITHIGNORE AS ARITHIGNORE;  

权限

要求 公共 角色具有成员身份。

示例

以下示例演示了两种 SET ARITHIGNORE 设置在两类查询错误下:除以零和算术溢出。

SET ARITHABORT OFF;  
SET ANSI_WARNINGS OFF  
GO  

PRINT 'Setting ARITHIGNORE ON';  
GO  
-- SET ARITHIGNORE ON and testing.  
SET ARITHIGNORE ON;  
GO  
SELECT 1 / 0 AS DivideByZero;  
GO  
SELECT CAST(256 AS TINYINT) AS Overflow;  
GO  

PRINT 'Setting ARITHIGNORE OFF';  
GO  
-- SET ARITHIGNORE OFF and testing.  
SET ARITHIGNORE OFF;  
GO  
SELECT 1 / 0 AS DivideByZero;  
GO  
SELECT CAST(256 AS TINYINT) AS Overflow;  
GO  

示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

以下示例展示了除以零和溢出误差。 该示例不会返回错误信息,因为 ARITHIGNOREOFF

-- SET ARITHIGNORE OFF and testing.  
SET ARITHIGNORE OFF;  
SELECT 1 / 0 AS DivideByZero;  
SELECT CAST(256 AS TINYINT) AS Overflow;