적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
이 설정은 SET ARITHIGNORE 쿼리가 산술 오버플로우 또는 0으로 나누는 오류에 대한 오류 메시지를 반환하는지 제어합니다. 이 설정은 SET ARITHIGNORE ON "0으로 나눠짐이 발생했습니다." 또는 "산술 오버플로우가 발생했습니다."라는 메시지를 억제합니다.
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산술 오류가 발생하면, 가 일OFF때SET ARITHIGNORE경고 메시지가 나타나고 산술 연산 결과가 가 될 때입니다NULL.SET ANSI_WARNINGS - 만약 와
SET ANSI_WARNINGS가 모두SET ARITHABORT이고OFF산술 오류가 발생하면, 가 이고ON산술 연산 결과가 일NULL때SET ARITHIGNORE경고 메시지가 나타나지 않는다.
이 설정은 ARITHIGNORE 쿼리가 오류 메시지를 반환하는지 여부만 제어합니다. SQL 데이터베이스 엔진은 오버플로우 또는 0으로 나눗어지는 오류가 포함된 계산에서 이 설정과 상관없이 반환 NULL 합니다. 이 설정은 , , UPDATEDELETE 그리고 문장 중에 INSERT발생하는 오류에는 영향을 주지 않습니다.
만약 또는 SET ARITHIGNORE 중 하나가 SET ARITHABORT , OFF가 SET 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;