2011-04-11 4 views
4

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

У меня есть

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

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

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

+2

Где/Как вы оцениваете результаты? Вы пробовали в SSMS? –

+0

Как вы относитесь к стоимости Продукта? Является ли это переменной или вы создаете динамическое вложение Statement? Я думаю, что предоставление более полной схемы таблицы и примера запроса поможет ответить на ваш вопрос. –

+5

Информация не достаточна – gbn

ответ

1

Возможно ли, что ваш запрос вызвал indexed view на случай?

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

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

Смежные вопросы