ОБНОВЛЕНИЕ не удалось, потому что следующие параметры SET имеют неправильные настройки: 'QUOTED_IDENTIFIER' - PullRequest
35 голосов
/ 07 августа 2009

У меня проблема с хранимой процедурой обновления. Ошибка:

ОБНОВЛЕНИЕ не удалось, потому что следующие параметры SET имеют неправильные настройки: 'QUOTED_IDENTIFIER'. Убедитесь, что параметры SET верны для использования с индексированными представлениями и / или индексами для вычисляемых столбцов и / или уведомлениями о запросах и / или методами типа данных xml.

Состояние SQL: 42000
Собственная ошибка: 1934

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

Есть ли какие-либо предложения, которые помогли бы определить проблему?

Примечание: Если я установлю quoted_identifier на ON и перезапущу CREATE PROCEDURE, проблема будет исправлена ​​(пока). Но я хочу понять, что вызвало эту проблему в первую очередь.

Ответы [ 5 ]

46 голосов
/ 10 мая 2012

Чтобы избежать этой ошибки, мне нужно было добавить

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;

для всех моих сохраненных процедур, редактирующих таблицу с вычисляемым столбцом.

Вам не нужно добавлять SET внутри процедуры, просто используйте его при создании, например:

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

CREATE PROCEDURE dbo.proc_myproc
...
3 голосов
/ 07 августа 2009

Мы не можем создать индексированное представление, отключив указанный идентификатор. Я только что попробовал, и SQL 2005 сразу выдает ошибку, если она выключена:

Невозможно создать индекс. Объект 'SmartListVW' был создан со следующими отключенными параметрами SET: 'QUOTED_IDENTIFIER'.

Как сказал Гбн, восстановление индексов должно быть единственным способом, которым он был отключен.

Я видел много статей о том, что он должен быть включен до создания индекса для представлений. В противном случае вы получите ошибку при вставке и обновлении таблицы, но здесь я могу сразу получить ошибку, поэтому движок sql не позволит создать индекс для представлений, отключив его, по этой ссылке msdn .

Я задавал подобный вопрос здесь в стеке некоторое время назад ...

РЕДАКТИРОВАТЬ

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

2 голосов
/ 10 февраля 2014

Я опоздал на эту вечеринку, но имел эту ошибку и хотел поделиться ею.

Наша проблема была повторяющейся, но случайной, поэтому мы знали, что это не тот объект, который был создан неправильно.

Наконец, мы отследили его до соединения ODBC на одном из серверов в нашей ферме Citrix. На этом сервере ODBC, о котором идет речь, отключили QUOTED_IDENTIFIERS (не проверено). На всех остальных серверах это было проверено, как и ожидалось. Мы включили эту опцию, и проблема была мгновенно решена.

2 голосов
/ 07 августа 2009

Некоторые мысли:

Перестроены ли индексы? Если вы ведете индексирование с помощью DMO, то quoted_identifier не всегда будет сохранен. Это - краска, чтобы отследить, и была специфическая проблема SQL Server 2000 до SP4 или около того.

Однако я видел и на SQL Server 2005 некоторое время назад.

0 голосов
/ 18 августа 2016

Сегодня я получил эту ошибку при запуске хранимой процедуры в SSMS. Отключение от сервера и повторное подключение с новым сеансом решили проблему для меня. У SP, на котором я работал, такой проблемы никогда не было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...