INSERT не удалось, поскольку следующие параметры SET имеют неправильные настройки: 'QUOTED_IDENTIFIER'

Мы иногда получаем сообщение ниже при выполнении хранимой процедуры, после чего без каких-либо изменений удаление и повторная выполнение хранимой процедуры работает нормально.

Ошибка DBCORE INSERT, потому что следующие параметры SET имеют неправильные настройки: "QUOTED_IDENTIFIER". Убедитесь, что параметры SET верны для использования с индексированными представлениями и/или индексами для вычисленных столбцов и/или отфильтрованных индексов и/или уведомлений запросов и/или методов типа данных XML и/или операций пространственного индекса.

Просьба помочь нам понять это.

Ответ 1

QUOTED_IDENTIFIER является "липкой" опцией, поэтому параметр, действующий при создании процедуры, используется во время выполнения. Поскольку никаких изменений процедуры не было сделано, ошибка предполагает, что хранимая процедура была создана с QUOTED_IDENTIFIER OFF и был создан /QUOTED_IDENTIFIER OFF индекс с одним из типов, упомянутых в сообщении об ошибке.

Воссоздайте или измените хранимую процедуру из сеанса с QUOTED_IDENTIFIER ON и ANSI_NULLS ON чтобы избежать дальнейшей проблемы.

Ответ 2

Я столкнулся с этой проблемой, поэтому я создал все свои рабочие шаги в хранимых процедурах в MS SQL. При использовании шаблона он автоматически имеет следующее

GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON

Ответ 3

В моем случае мне пришлось добавить параметр -I в командную строку sqlcmd.exe при загрузке хранимых процедур в массовом режиме.

Ответ 4

Если кто-то обнаружит эту ошибку после развертывания через проект базы данных Visual Studio, тогда стоит проверить свойства файла хранимой процедуры. Если для этого параметра установлено " Проект по умолчанию", перейдите в свойства вашего проекта базы данных> "Настройки проекта" и нажмите кнопку "Настройка базы данных".

Вы можете включить эти два значения (и другие) по умолчанию, как показано на скриншоте ниже.

enter image description here

Это только исправит проблему, если у вас есть изменения в процедуре, как когда-либо; сравнение схемы и последующее обновление не изменят QUOTED_IDENTIFIER в хранимой процедуре, если только в теле процедуры не будут внесены изменения. Это предотвратит повторное возникновение проблемы при последующем обновлении схемы.