SET ARITHIGNORE (Transact-SQL)

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

Настройка SET ARITHIGNORE управляет, возвращает ли запрос сообщения об ошибке при арифметическом переполнении или при делении на ноль. Настройка SET ARITHIGNORE ON подавляет сообщения «Произошло деление на ноль» или «Произошёл арифметический переполнение».

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

Синтаксис

Синтаксис для SQL Server, База данных SQL Azure, Microsoft Fabric Data Warehouse, SQL базы данных в Microsoft Fabric


SET ARITHIGNORE { ON | OFF }

Синтаксис для Системы платформы Azure Synapse Analytics и Analytics (PDW)


SET ARITHIGNORE OFF

Замечания

  • Если оба SET ARITHABORT и SET ANSI_WARNINGS являются OFF и встречаются арифметическая ошибка, появляется предупреждающее сообщение, когда SET ARITHIGNORE равна OFF, и результат арифметической операции — NULL.
  • Если оба SET ARITHABORT и SET ANSI_WARNINGS являются OFF и встречаются арифметическая ошибка, предупреждающее сообщение не появляется, если SET ARITHIGNORE равен ON, а результат арифметической операции равен NULL.

Настройка ARITHIGNORE только определяет, возвращает ли запрос сообщение об ошибке. SQL ядро СУБД возвращает NULL вычисление с ошибкой переполнения или делением на ноль, независимо от этой настройки. Эта настройка не влияет на ошибки, возникающие во INSERTвремя , UPDATEи DELETE операторов.

Если либо SET ARITHABORT либо SET ARITHIGNORE , либо , OFFа SET ANSI_WARNINGS равно ON, запрос всё равно возвращает сообщение об ошибке, когда встречается с ошибками деления на ноль или переполнения. Когда ANSI_WARNINGSON (по умолчанию), настройка не ARITHABORT имеет функционального эффекта.

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

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

Просмотр текущей настройки ARITHIGNORE

Чтобы просмотреть текущую настановку ARITHIGNORE, выполните следующий запрос T-SQL.

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 что это OFF.

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