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