SET ARITHIGNORE (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric のSQL 分析エンドポイント
Microsoft Fabric のウェアハウス
クエリの途中でオーバーフロー エラーや 0 除算エラーが発生したときに、エラー メッセージを返すかどうかを制御します。
構文
-- 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
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
解説
SET ARITHIGNORE の設定では、エラー メッセージを返すかどうかだけを制御できます。 SQL Server ではこの設定に関係なく、計算でオーバーフローや 0 除算のエラーが生じた場合には NULL が返されます。 SET ARITHABORT の設定は、クエリが終了したかどうかを判断するために使用できます。 この設定は、INSERT、UPDATE、DELETE ステートメント中に発生するエラーに影響を与えません。
SET ARITHABORT と SET ARITHIGNORE のいずれかが OFF でも、SET ANSI_WARNINGS が ON の場合は、SQL Server で 0 除算やオーバーフロー エラーが検出されるとエラー メッセージが返されます。
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;