SET ARITHIGNORE (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

該設定控制 SET ARITHIGNORE 查詢是否回傳算術溢位錯誤或除以零錯誤的錯誤訊息。 此 SET ARITHIGNORE ON 設定會抑制「Div by zero happened.」或「Arithmetic overflow」等訊息。

Transact-SQL 語法慣例 (部分機器翻譯)

Syntax

SQL Server、Azure SQL Database、Microsoft Fabric Data Warehouse、SQL 資料庫的語法學Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Azure Synapse Analytics 和 Analytics Platform System (PDW) 的語法


SET ARITHIGNORE OFF

備註

  • 若 和 皆SET ARITHABORTOFF且發生算術錯誤,則SET ARITHIGNORE當 為 OFF時會顯示警告訊息,算術運算結果為 NULLSET ANSI_WARNINGS
  • SET ARITHABORT 和 皆為OFF且發生算術錯誤,則SET ARITHIGNORE若 為 ON,且算術運算結果為 NULL,則不SET ANSI_WARNINGS會出現警告訊息。

ARITHIGNORE 設定僅控制查詢是否回傳錯誤訊息。 SQL 資料庫引擎 在涉及溢位或除以零錯誤的計算中都會回傳NULL,無論此設定為何。 此設定不影響在 INSERTUPDATEDELETE 陳述期間發生的錯誤。

SET ARITHABORT 其中 或 SET ARITHIGNOREOFF,且 SET ANSI_WARNINGSON,查詢在遇到除以零或溢位錯誤時仍會回傳錯誤訊息。 當 ANSI_WARNINGSON 預設值時,設定 沒有 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 設定下兩種查詢錯誤:除以零與算術溢位。

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)

以下範例展示了除以零及溢位誤差。 此範例不會因這些錯誤回傳錯誤訊息,因為 ARITHIGNOREOFF

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