вторник, 2 июля 2013 г.

Что делают параметры ARITHABORT и ANSI_WARNINGS


-- При включенном параметре (по умолчанию в SSMS)
SET XACT_ABORT OFF

-- Если параметры установлены
SET ANSI_WARNINGS ON
SET ARITHABORT OFF
--  Ошибки приведут к пустому результирующему набору в инструкции, содержащей ошибку

SELECT 'Before'
SELECT
    100/50 AS Normal
    , 100/0 AS Error
SELECT 'After'
GO
-- Если параметры установлены
SET ANSI_WARNINGS OFF
SET ARITHABORT ON
--  Ошибки приведут к аварийному завершению пакета на инструкции, содержащей ошибку
SELECT 'Before'
SELECT
    100/50 AS Normal
    , 100/0 AS Error
SELECT 'After'
GO
-- Если параметры установлены
SET ANSI_WARNINGS ON
SET ARITHABORT ON
--  Ошибки приведут к пустому результирующему набору в инструкции, содержащей ошибку
SELECT 'Before'
SELECT
    100/50 AS Normal
    , 100/0 AS Error
SELECT 'After'

GO
-- Если параметры установлены
SET ANSI_WARNINGS OFF
SET ARITHABORT OFF
--  Ошибки не мешают выполнить инструкцию, содержащую ошибку. Результат 100/0 -> NULL. Ошибка не генерируется. Текст ошибки выводится как информационное сообщение.
SELECT 'Before'
SELECT
    100/50 AS Normal
    ,100/0 AS Error

SELECT 'After'

GO