Ошибка из-за неправильной настройки arithabort

Я создал уникальный индекс (описание случая должно быть уникальным, если IsDelete != 1)

CREATE UNIQUE NONCLUSTERED INDEX [UniqueCaseDescription]
ON [tblCases] ([fldCaseDescription] ASC) 
WHERE [IsDeleted] = CAST(0 AS varbinary(1))
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

Затем, когда я запускаю следующую процедуру, она выдает «Ошибка обновления, потому что следующие параметры SET имеют неправильные настройки: «ARITHABORT». Убедитесь, что параметры SET подходят для использования с отфильтрованными индексами».

ALTER PROC [usp_DeleteCase] (@fldCaseID UNIQUEIDENTIFIER)
AS
BEGIN   
    UPDATE tblCases
    SET IsDeleted = 1
    WHERE fldCaseID = @fldCaseID

    RETURN 1
END

Я попытался добавить SET ARITHABORT ON перед оператором UPDATE, но это ничего не дало.

Любая помощь приветствуется!


person Kate    schedule 01.02.2016    source источник
comment
Какой уровень совместимости БД вы используете? Попробуйте установить более высокую версию (в идеале, актуальную версию вашего движка БД :)).   -  person Luaan    schedule 02.02.2016


Ответы (1)


Если вы используете SQL Server, попробуйте применить следующие настройки:

1) Откройте студию управления SQL Server. 2) Щелкните правой кнопкой мыши имя используемой базы данных и выберите меню «Свойства»> «Параметры». Затем установите арифметическое прерывание включено = True в открывшемся диалоговом окне.

Примечание. Я также пытался применить те же настройки с помощью скрипта, но этот метод лучше применять через SSMS.

Надеюсь это поможет...

person Murat Yıldız    schedule 02.03.2016
comment
Оказалось, что мне не нужно было использовать отфильтрованный индекс, поэтому у меня не было возможности попробовать ваше решение. Спасибо за вашу помощь в любом случае! Может быть, это поможет кому-то еще, у кого такая же проблема. - person Kate; 30.03.2016