SET ARITHIGNORE (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft 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 的語法


SET ARITHIGNORE OFF

備註

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

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

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

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