SET ARITHIGNORE (Transact-SQL)

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

控制查询期间是否返回溢出或被零除错误的错误消息。

Transact-SQL 语法约定

语法

-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric

SET ARITHIGNORE { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  

SET ARITHIGNORE OFF

注意

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

备注

SET ARITHIGNORE 设置只控制是否返回错误消息。 SQL Server 在计算中出现溢出或被零除错误时将返回 NULL,不考虑此设置。 可以使用 SET ARITHABORT 设置来确定是否终止查询。 此设置不影响 INSERT、UPDATE 和 DELETE 语句执行过程中发生的错误。

如果 SET ARITHABORT 或 SET ARITHIGNORE 为 OFF,而 SET ANSI_WARNINGS 为 ON,则遇到被零除或溢出错误时,SQL Server 仍会返回错误消息。

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

要查看此设置的当前设置,请运行以下查询。

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

权限

要求具有 public 角色的成员身份。

示例

以下示例说明将两种 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)

以下示例演示了被零除错误和溢出错误。 对于这些错误,该示例不返回错误消息,因为 ARITHIGNORE 为 OFF。

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

另请参阅

SET 语句 (Transact-SQL)
SET ARITHABORT (Transact-SQL)