SET ARITHIGNORE (Transact-SQL)
適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Platform System (PDW) SQL 分析端點
控制在查詢期間,是從溢位或除以零的錯誤傳回錯誤訊息。
Transact-SQL 語法慣例 (部分機器翻譯)
Syntax
-- 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;