SET ARITHIGNORE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Ustawienie to decyduje, SET ARITHIGNORE czy zapytanie zwraca komunikaty o błędach dotyczących przepełnienia arytmetycznego czy błędów dzielenia przez zero. Ustawienie to SET ARITHIGNORE ON tłumi komunikaty "Wystąpiło dzielenie przez zero." lub "Doszło do przepełnienia arytmetyki."

Transact-SQL konwencje składni

Składnia

Składnia bazy danych SQL Server, Azure SQL Database, Microsoft Fabric Data Warehouse SQL w Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Składnia dla usługi Azure Synapse Analytics i systemu platformy analizy (PDW)


SET ARITHIGNORE OFF

Uwagi

  • Jeśli wystąpią zarówno i SET ARITHABORTSET ANSI_WARNINGS , jak OFF i błąd arytmetyczny, pojawia się komunikat ostrzegawczy, gdy SET ARITHIGNORE jest , OFFa wynik operacji arytmetycznej to NULL.
  • Jeśli wystąpią zarówno i SET ARITHABORT , jak i błąd arytmetyczny, nie pojawi się komunikat ostrzegawczy, jeśli SET ARITHIGNORE jest , ONa wynik operacji arytmetycznej to NULL.OFFSET ANSI_WARNINGS

Ustawienie to ARITHIGNORE kontroluje jedynie, czy zapytanie zwraca komunikat o błędzie. SQL Database Engine zwraca w NULL obliczeniach z błędem przepełnienia lub dzielenia przez zero, niezależnie od tego ustawienia. To ustawienie nie wpływa na błędy występujące podczas INSERT, UPDATE, i DELETE instrukcji.

Jeśli lub SET ARITHABORTSET ARITHIGNORE jest , OFFa SET ANSI_WARNINGS jest , ONzapytanie nadal zwraca komunikat o błędzie, gdy napotka błędy dzielenia przez zero lub przepełnienia. Gdy ANSI_WARNINGS jest ( ON domyślnie), ustawienie nie ARITHABORT ma efektu funkcjonalnego.

Ustawienie jest SET ARITHIGNORE ustawione na czas wykonania lub działania, a nie na czas parsowania.

Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Zobacz aktualne ustawienia ARITHIGNORE

Aby zobaczyć aktualne ustawienie , ARITHIGNOREuruchom następujące zapytanie T-SQL.

DECLARE @ARITHIGNORE VARCHAR(3) = 'OFF';  
IF ( (128 & @@OPTIONS) = 128 ) SET @ARITHIGNORE = 'ON';
SELECT @ARITHIGNORE AS ARITHIGNORE;  

Permissions

Wymaga członkostwa w publicznej roli .

Przykłady

Poniższy przykład pokazuje użycie obu SET ARITHIGNORE ustawień z obiema typami błędów zapytań: dzielenie przez zero oraz przepełnienie arytmetyki.

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  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

Poniższy przykład demonstruje metodę dzielenie przez zero oraz błędy przepełnienia. Ten przykład nie zwraca komunikatu o błędzie dla tych błędów, ponieważ ARITHIGNORE jest .OFF

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