SET ARITHIGNORE (Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

이 설정은 SET ARITHIGNORE 쿼리가 산술 오버플로우 또는 0으로 나누는 오류에 대한 오류 메시지를 반환하는지 제어합니다. 이 설정은 SET ARITHIGNORE ON "0으로 나눠짐이 발생했습니다." 또는 "산술 오버플로우가 발생했습니다."라는 메시지를 억제합니다.

Transact-SQL 구문 표기 규칙

Syntax

SQL Server, Azure SQL Database, Microsoft Fabric Data Warehouse, SQL 데이터베이스의 문법 Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW) 구문


SET ARITHIGNORE OFF

설명

  • 만약 와 가 모두 SET ARITHABORT 이고 OFF 산술 오류가 발생하면, 가 일 OFFSET ARITHIGNORE 경고 메시지가 나타나고 산술 연산 결과가 가 될 때입니다NULL.SET ANSI_WARNINGS
  • 만약 와 SET ANSI_WARNINGS 가 모두 SET ARITHABORT 이고 OFF 산술 오류가 발생하면, 가 이고 ON산술 연산 결과가 일 NULLSET ARITHIGNORE 경고 메시지가 나타나지 않는다.

이 설정은 ARITHIGNORE 쿼리가 오류 메시지를 반환하는지 여부만 제어합니다. SQL 데이터베이스 엔진은 오버플로우 또는 0으로 나눗어지는 오류가 포함된 계산에서 이 설정과 상관없이 반환 NULL 합니다. 이 설정은 , , UPDATEDELETE 그리고 문장 중에 INSERT발생하는 오류에는 영향을 주지 않습니다.

만약 또는 SET ARITHIGNORE 중 하나가 SET ARITHABORT , OFFSET ANSI_WARNINGS 이라ON면, 쿼리는 0으로 나누기나 오버플로우 오류가 발생할 때 오류 메시지를 반환합니다. 가 기본값 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;  

사용 권한

public 역할의 멤버 자격이 필요합니다.

예제

다음 예시는 두 SET ARITHIGNORE 가지 설정을 모두 사용해 두 종류의 쿼리 오류, 즉 0으로 나누기와 산술 오버플로우 모두를 시연합니다.

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 및 분석 플랫폼 시스템(PDW)

다음 예시는 0으로 나누는 방식과 오버플로우 오류를 보여줍니다. 이 예시는 이 오류들에 대해 오류 메시지를 반환하지 않습니다. 왜냐하면 는 이기 OFF때문입니다ARITHIGNORE.

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