SET ARITHIGNORE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

注意

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)