SET ARITHIGNORE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Inställningen SET ARITHIGNORE styr om frågan returnerar felmeddelanden för aritmetiskt överflöd eller delade med noll-fel. Inställningen SET ARITHIGNORE ON undertrycker meddelandena "Division by zero" eller "Arithmetic overflow occured."

Transact-SQL syntaxkonventioner

Syntax

Syntax för SQL Server, Azure SQL Database, Microsoft Fabric Data Warehouse SQL-databaser i Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Syntax för Azure Synapse Analytics and Analytics Platform System (PDW)


SET ARITHIGNORE OFF

Anmärkningar

  • Om både och är och ett aritmetiskt fel inträffar, visas ett varningsmeddelande när SET ARITHIGNORE är OFF, och resultatet av den aritmetiska operationen är NULL.OFFSET ANSI_WARNINGSSET ARITHABORT
  • Om både och är och ett aritmetiskt fel uppstår, visas inget varningsmeddelande om SET ARITHIGNORE är ON, och resultatet av den aritmetiska operationen är NULL.OFFSET ANSI_WARNINGSSET ARITHABORT

Inställningen ARITHIGNORE styr endast om frågan returnerar ett felmeddelande. SQL Database Engine returnerar NULL i en beräkning som involverar ett överflödes- eller dela-med-noll-fel, oavsett denna inställning. Denna inställning påverkar inte fel som uppstår under INSERT, UPDATE, och DELETE satser.

Om antingen SET ARITHABORT eller SET ARITHIGNORE är OFF, och SET ANSI_WARNINGS är ON, returnerar frågan ändå ett felmeddelande när den stöter på del-med-noll- eller överflödesfel. När ANSI_WARNINGS är ON (standard) har inställningen av ARITHABORT ingen funktionell effekt.

Inställningen av SET ARITHIGNORE är satt vid exekverings- eller körtid och inte vid parsetid.

Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Visa nuvarande inställning av ARITHIGNORE

För att se den aktuella inställningen för ARITHIGNORE, kör följande T-SQL-fråga.

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

Permissions

Kräver medlemskap i offentlig roll.

Examples

Följande exempel visar att man använder båda SET ARITHIGNORE inställningarna med båda typerna av frågefel: dividering-med-noll och aritmetiskt överflöd.

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  

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

Följande exempel visar delning med noll och överflödesfel. Detta exempel ger inget felmeddelande för dessa fel eftersom ARITHIGNORE är OFF.

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