SET ARITHIGNORE (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Die Einstellung SET ARITHIGNORE steuert, ob die Abfrage Fehlermeldungen für arithmetische Überlauf- oder Divividationsfehler zurückgibt. Die Einstellung SET ARITHIGNORE ON unterdrückt die Nachrichten "Division durch Null geschah." oder "Arithmetischer Überlauf ist aufgetreten."

Transact-SQL-Syntaxkonventionen

Syntax

Syntax für SQL Server, Azure SQL-Datenbank, Microsoft Fabric Data Warehouse SQL-Datenbanken in Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Syntax für Azure Synapse Analytics und Analytics-Plattformsystem (PDW)


SET ARITHIGNORE OFF

Bemerkungen

  • Wenn sowohl SET ARITHABORT als auch SET ANSI_WARNINGS sind OFF und ein rechentechnischer Fehler auftritt, erscheint eine Warnmeldung, wenn SET ARITHIGNORE , OFFund das Ergebnis der arithmetischen Operation ist NULL.
  • Wenn sowohl SET ARITHABORT als auch SET ANSI_WARNINGS sind OFF und ein Rechenfehler auftritt, erscheint keine Warnmeldung, wenn SET ARITHIGNORE , ONund das Ergebnis der arithmetischen Operation ist NULL.

Die Einstellung steuert ARITHIGNORE nur, ob die Abfrage eine Fehlermeldung zurückgibt. Die SQL Datenbank-Engine liefert eine Berechnung zurück, NULL die einen Überlauf- oder Teile-durch-Null-Fehler enthält, unabhängig von dieser Einstellung. Diese Einstellung beeinflusst keine Fehler, die während INSERT, UPDATE, und DELETE Anweisungen auftreten.

Wenn entweder SET ARITHABORT oder SET ARITHIGNOREOFF, und SET ANSI_WARNINGS , ONist, liefert die Abfrage dennoch eine Fehlermeldung, wenn sie auf Divivide-by-Zero- oder Überlauffehler stößt. Wenn ANSI_WARNINGS dies ist ON (der Standard), hat die Einstellung von ARITHABORT keine funktionale Auswirkung.

Die Einstellung wird SET ARITHIGNORE zur Ausführung oder Laufzeit und nicht zur Analysezeit festgelegt.

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Aktuellen Einstellungen von ARITHIGNORE

Um die aktuelle Einstellung von ARITHIGNOREanzuzeigen, führen Sie die folgende T-SQL-Abfrage aus.

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

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Beispiele

Das folgende Beispiel zeigt, wie beide SET ARITHIGNORE Einstellungen mit beiden Arten von Abfragefehlern verwendet werden: Teilen-durch-Null und arithmetischer Überlauf.

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  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

Das folgende Beispiel zeigt die Teilung durch Null und die Überlauffehler. Dieses Beispiel gibt für diese Fehler keine Fehlermeldung zurück, weil ARITHIGNORE .OFF

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