SQL Server 2008 проблема SET QUOTED_IDENTIFIER OFF - PullRequest
4 голосов
/ 12 апреля 2011

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

У меня есть

DECLARE @Products TABLE()... then INSERT INTO @Products SELECT ROW_NUMBER()...

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

Какое у меня решение?

1 Ответ

1 голос
/ 23 мая 2011

Случайно ли ваш процесс вызывает индексированное представление ?

Индексированные просмотры зависят от того, что для SET QUOTED_IDENTIFIER установлено значение ON.Proc будет иметь обратный эффект в случае, если он явно используется с использованием WITH (NOEXPAND), в противном случае он также может остановиться, поскольку он будет рассматривать его как нормальное представление.См. Следующую статью по MSDN .

Должны быть написаны хранимые процедуры и триггеры для работы с шестью опциями SET, которые необходимы для поддержки индексов для представлений и вычисляемых столбцов.Оптимизатор запросов не использует индекс для представления или вычисляемого столбца в инструкциях SELECT, которые выполняются хранимой процедурой или запускаются при неправильной установке параметров SET.Оператор INSERT, UPDATE или DELETE в хранимой процедуре или триггере, который изменяет значения данных, хранящиеся в индексированном представлении или вычисляемом столбце, генерирует ошибку.

...