FIX: SELECT 문에서 SQL Server 2008의 공용 테이블 식을 괄호로 사용할 경우 잘못된 결과를

기술 자료 번역 기술 자료 번역
기술 자료: 2322209 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft SQL Server 2008을 실행하는 컴퓨터에서 것이 다음 시나리오를.

시나리오 1

WITH 문을 사용하여 공용 테이블 식 (CTE) 지정합니다. 예를 들어, 다음 쿼리는. 실행할
WITH common_table_expression AS 

(SELECT * FROM sys.objects)

(SELECT *

FROM common_table_expression)
그런 다음 실행하여 이 쿼리.
SELECT *

FROM sys.dm_exec_query_stats

WHERE statement_start_offset > statement_end_offset

AND

statement_end_offset <> -1
가 이 시나리오에서는 이 쿼리는 캐시된 쿼리 계획을 statement_start_offset 및 statement_end_offset 잘못된 값을 저장합니다. 특히 statement_end_offset 값 (DMV) sys.dm_exec_query_stats 동적 관리 뷰를 실행하면 statement_start_offset 값보다 작은 것을 확인할.

이 문제는 인해 성능 보고서를 못할 때 보고서를 가정합니다 것을 statement_start_offset 값이 항상 작은 statement_stop_offset 값입니다.

시나리오 2

WITH 문을 사용하여 공용 테이블 식을 지정하고 RECOMPILE 옵션을 사용합니다. 예를 들어, 함수를 SQL Server 2008의 다음 script. 사용하여 만든
CREATE FUNCTION function1() RETURNS int AS
BEGIN
DECLARE @x int
SET @x=1;
WITH common_table_expression AS

(SELECT @x AS column1)

(SELECT @x=column1 FROM common_table_expression)

OPTION(RECOMPILE)
RETURN @x
END
dbo.function1() “ 선택한 ” 쿼리를 실행하면 다음과 같은 오류 메시지가 나타납니다:
현재 명령에서 A 심각한 오류가 발생했습니다. 어떤 경우에는 결과를 무시합니다.

또한 이 오류가 발생할 경우 SQL Server 것입니다 발생한 RECOMPILE 옵션을 사용하지 않고 서버에 과도한 트래픽을.

시나리오 3

WITH 문을 사용하여 공용 테이블 식을 지정합니다. WITH 문에서 존재하지 않는 테이블을 지정합니다. 예를 들어, 다음 쿼리는. 실행할
WITH computed_table (id) AS
(SELECT id 
FROM this_table_does_not_exist) 
(SELECT id 
FROM dbo.computed_table) 
GO
이 쿼리를 실행할 때 않은 받은 오류가 없는 테이블.

원인

SELECT 문의 WITH 문 다음에 오는 고장난 처리로 인해 이러한 문제가 발생합니다. 다음 구문은. WITH 문을 사용하는
WITH common_table_expression AS

(CTE_query_definition)
이 문을 지정한 공용 테이블 식 이름을 할당한 결과 집합을 만듭니다. 그런 다음 이 문의 SELECT 문 사용하여 수행합니다. 이 두 번째 문은 괄호로 묶인 및 다음 결과를 수행할 시도할 sys.dm_exec_query_stats 동적 관리 뷰를 실행하려는 경우 잘못된 결과를 또는 오류. 받을

해결 방법

있는 SQL Server 2008 서비스 팩 2 CTP 이러한 문제를 해결할 수 있었습니다. 다운로드 및 설치 최신 SQL Server 2008 서비스 팩.
968382SQL Server 2008 최신 서비스 팩을 구하는 방법
the SQL Server 2008 서비스 팩 2 CTP Microsoft 다운로드 센터에서 직접 다운로드할 수:
SQL Server 2008 서비스 팩 2 CTP

해결 과정

이러한 문제를 해결하려면 공용 테이블 식 다음에 오는 문에서 괄호는 제거해야 합니다. 예를 들어, 다음 문을 사용하여 이러한 괄호가. WITH 고려해야
WITH common_table_expression AS 

(SELECT *
FROM sys.objects)

(SELECT *

FROM common_table_expression)
이 문제를 해결하려면 시간 변경 다음 WITH 문이 않은 사용하는 이러한 괄호가.
WITH common_table_expression AS 

(SELECT *
FROM sys.objects)
SELECT *

FROM common_table_expressio

현재 상태

Microsoft 것입니다 "본 문서의 정보는 다음의 제품에 적용됩니다." 섹션을. 나열된 제품에서 문제가 확인되지 있습니다

추가 정보

WITH 문을 사용하여 공용 테이블 식을 사용하는 방법에 대한 자세한 내용은 다음 MSDN 웹 페이지를 방문하십시오:
WITH common_table_expression Transact-SQL)
sys.dm_exec_query_stats에 대한 자세한 내용은 다음 MSDN 웹 페이지를 방문하십시오:
sys.dm_exec_query_stats Transact-SQL)

속성

기술 자료: 2322209 - 마지막 검토: 2010년 8월 31일 화요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
키워드:?
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbtshoot kbquery kbmt KB2322209 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:2322209

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com