2011-04-11 5 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

어떻게 제품의 가치를 전달하고 있습니까? 변수이거나 Insert 문을 동적으로 작성하고 있습니까? 더 완벽한 테이블 스키마와 예제 쿼리를 제공하는 것이 여러분의 질문에 도움이 될 것이라고 생각합니다. –

+5

정보가 충분하지 않습니다. – gbn

답변

1

기회는 indexed view입니다.

인덱싱 된 뷰는 SET QUOTED_IDENTIFIER가 ON으로 설정되어 있어야합니다. proc은 WITH (NOEXPAND)를 사용하여 명시 적으로 사용되는 경우 역효과를 보냅니다. 그렇지 않으면 일반보기로 취급하므로 중단 될 수 있습니다. article on MSDN을 참조하십시오.

저장 프로 시저와 트리거는 여섯 개 SET와 전망에 인덱스를 지원하는 데 필요한 및 열을 계산 옵션을 작동하도록 작성해야한다. 쿼리 최적화 프로그램은 인덱스에서 인덱스를 사용하거나 SET 문에서 이 저장 프로 시저에 의해 실행되거나 트리거 인 SET 문에서 이 잘못 설정된 SELECT 문에서 계산 된 열을 계산하지 않습니다. 인덱스 된보기 또는 계산 된 열에 데이터 값을 수정하는 저장된 프로 시저 또는 트리거의 INSERT, UPDATE 또는 DELETE 문에서 오류가 발생합니다.