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 ARITHABORT為SET ANSI_WARNINGS且發生算術錯誤,則OFF當 為 SET ARITHIGNORE時會顯示警告訊息,算術運算結果為 OFF。NULL
  • 若 SET ARITHABORT 和 皆為SET ANSI_WARNINGS且發生算術錯誤,則OFF若 為 SET ARITHIGNORE,且算術運算結果為 ON,則不NULL會出現警告訊息。

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

若 SET ARITHABORT 其中 或 SET ARITHIGNORE 為 OFF,且 SET ANSI_WARNINGS 為 ON,查詢在遇到除以零或溢位錯誤時仍會回傳錯誤訊息。 當 ANSI_WARNINGS 是 ON 預設值時,設定 沒有 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

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

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