SET ARITHIGNORE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

クエリの途中でオーバーフロー エラーや 0 除算エラーが発生したときに、エラー メッセージを返すかどうかを制御します。

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

Note

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

解説

SET ARITHIGNORE設定はエラーメッセージの返送のみを制御します。 SQL Server ではこの設定に関係なく、計算でオーバーフローや 0 除算のエラーが生じた場合には NULL が返されます。 SET SET ARITHABORT設定を使ってクエリが終了するかどうかを判定できます。 この設定は、 INSERT、 UPDATE、 DELETE 文中に発生するエラーには影響しません。

SET ARITHABORTまたはSETSET ARITHIGNOREのいずれかがオフでSETSET 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 が ON の場合と OFF の場合に、2 種類のクエリ エラーが発生するとどうなるかを示します。

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)

次の例では、0 除算のエラーおよびオーバーフロー エラーを示します。 この例では、 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 SET ARITHABORT (Transact-SQL)