SET ARITHIGNORE (Transact-SQL)SET ARITHIGNORE (Transact-SQL)

DIESES THEMA GILT FÜR: jaSQL Server (ab 2008)jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Steuert die Rückgabe von Fehlermeldungen, die wegen Überlauffehlern oder Fehlern aufgrund einer Division durch Null während einer Abfrage auftreten.Controls whether error messages are returned from overflow or divide-by-zero errors during a query.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- Syntax for SQL Server and Azure SQL Database  

SET ARITHIGNORE { ON | OFF }  
[ ; ]  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

SET ARITHIGNORE OFF   
[ ; ]  

HinweiseRemarks

Die SET ARITHIGNORE-Einstellung steuert lediglich, ob eine Fehlermeldung zurückgegeben wird.The SET ARITHIGNORE setting only controls whether an error message is returned. SQL ServerSQL Server gibt unabhängig von dieser Einstellung in einer Berechnung NULL zurück, wenn ein Überlauf- oder Division-durch-0-Fehler auftritt. returns a NULL in a calculation involving an overflow or divide-by-zero error, regardless of this setting. Mithilfe der SET ARITHABORT-Einstellung kann bestimmt werden, ob die Abfrage beendet wird.The SET ARITHABORT setting can be used to determine whether the query is terminated. Diese Einstellung wirkt sich nicht auf Fehler aus, die im Verlauf von INSERT-, UPDATE- und DELETE-Anweisungen auftreten.This setting does not affect errors occurring during INSERT, UPDATE, and DELETE statements.

Auch wenn SET ARITHABORT oder SET ARITHIGNORE auf OFF und SET ANSI_WARNINGS auf ON festgelegt sind, gibt SQL ServerSQL Server eine Fehlermeldung zurück, wenn ein Fehler aufgrund einer Division durch Null oder ein Überlauffehler auftritt.If either SET ARITHABORT or SET ARITHIGNORE is OFF and SET ANSI_WARNINGS is ON, SQL ServerSQL Server still returns an error message when encountering divide-by-zero or overflow errors.

Die Einstellung von SET ARITHIGNORE wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.The setting of SET ARITHIGNORE is set at execute or run time and not at parse time.

Um die aktuelle Einstellung anzuzeigen, führen Sie die folgende Abfrage aus.To view the current setting for this setting, run the following query.

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

BerechtigungenPermissions

Erfordert die Mitgliedschaft in der public-Rolle.Requires membership in the public role.

BeispieleExamples

Im folgenden Beispiel wird die Verwendung beider SET ARITHIGNORE-Einstellungen mit beiden Typen von Abfragefehlern veranschaulicht.The following example demonstrates using both SET ARITHIGNORE settings with both types of query errors.

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 SQL Data WarehouseAzure SQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

Das folgende Beispiel zeigt die Division durch 0 (null) und die Überlauffehler.The following example demonstrates the divide by zero and the overflow errors. In diesem Beispiel wird eine Fehlermeldung für diese Fehler nicht zurückgeben, da es sich bei ARITHIGNORE auf OFF festgelegt ist.This example does not return an error message for these errors because ARITHIGNORE is OFF.

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

Siehe auchSee Also

SET-Anweisungen (Transact-SQL) SET Statements (Transact-SQL)
SET ARITHABORT ( Transact-SQL )SET ARITHABORT (Transact-SQL)