Я создал отфильтрованный некластеризованный индекс для оптимизации определенного набора запросов, но я начал получать следующие ошибки из различных источников:
ОБНОВЛЕНИЕ не удалось, потому что следующие параметры SET имеют неправильные
Настройки: «ANSI_NULLS». Убедитесь, что параметры SET верны для использования
с индексированными представлениями и / или индексами по вычисляемым столбцам и / или фильтруется
индексы и / или уведомления о запросах и / или методы типа данных XML и / или
операции с пространственным индексом.
Похоже, что некоторые устаревшие подпрограммы создаются с опцией SET ANSI_NULLS OFF
, и когда движок пытается обновить таблицу назначения из заданного контекста, выдается ошибка.
Мне интересно, есть ли способ увидеть, какие подпрограммы создаются с помощью этой опции. Например, если вы пишете такую подпрограмму, вы получите что-то вроде этого:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE ....
Обычно я использую сценарии, подобные приведенному ниже, для поиска вещей в определениях объектов, но эти настройки не являются его частью:
DECLARE @SearchWord NVARCHAR(128) = 'SET ANSI_NULLS OFF'
SELECT [ROUTINE_NAME]
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_DEFINITION] LIKE '%' + @SearchWord+'%'
UNION
SELECT OBJECT_NAME([id])
FROM [SYSCOMMENTS]
WHERE [text] LIKE '%' + @SearchWord + '%'
GROUP BY OBJECT_NAME([id])
UNION
SELECT OBJECT_NAME(object_id)
FROM [sys].[sql_modules]
WHERE [definition] LIKE '%' + @SearchWord + '%' ;