SET ARITHIGNORE (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

Осуществляет контроль возврата сообщения об ошибке при переполнении или делении на ноль во время выполнения запроса.

Соглашения о синтаксисе Transact-SQL

Синтаксис

-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric

SET ARITHIGNORE { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  

SET ARITHIGNORE OFF

Примечание.

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Замечания

Настройка SET ARITHIGNORE только определяет, возвращается ли сообщение об ошибке. При возникновении переполнения или при попытке деления на ноль SQL Server возвращает значение NULL вне зависимости от данной настройки. Этот SETSET ARITHABORT параметр можно использовать для определения завершения запроса. Эта настройка не влияет на ошибки, возникающие во время INSERT, UPDATE, и DELETE операторов.

Если один SET ARITHABORT из вариантов ВЫКЛЮЧЕН SETSET ARITHIGNORE и SETSET ANSI_WARNINGS включён, SQL Server всё равно возвращает сообщение об ошибке при сталкивании с делением на ноль или ошибками переполнения.

Параметр SET ARITHIGNORE устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.

Чтобы просмотреть текущее значение для этого параметра, выполните следующий запрос.

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 и система платформы аналитики (PDW)

Следующий пример демонстрирует ошибки деления на ноль и переполнения. Этот пример не возвращает сообщение об ошибке для этих ошибок, потому ARITHIGNORE что он ВЫКЛЮЧЕН.

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

См. также

SET Операторы (Transact-SQL)
SET SET ARITHABORT (Transact-SQL)