다음을 통해 공유


MSSQLSERVER_2814

세부 정보

제품 이름

SQL Server

제품 버전

10.0

제품 빌드 번호

 

이벤트 ID

2814

이벤트 원본

MSSQLSERVER

구성 요소

SQLEngine

심볼 이름

PR_POSSIBLE_INFINITE_RECOMPILE

메시지 텍스트

SQLHANDLE %hs, PlanHandle %hs, 시작 오프셋 %d, 끝 오프셋 %d에 대해 발생 가능한 무한 재컴파일이 검색되었습니다. 마지막 재컴파일 이유는 %d이었습니다.

설명

하나 이상의 문으로 인해 쿼리 일괄 처리가 50회 이상 재컴파일되었습니다. 재컴파일이 더 이상 수행되지 않도록 하려면 지정된 문을 수정해야 합니다.

다음 표에서는 재컴파일의 이유를 나열합니다.

이유 코드

설명

1

스키마가 변경됨

2

통계가 변경됨

3

컴파일이 지연됨

4

설정된 옵션이 변경됨

5

임시 테이블이 변경됨

6

원격 행 집합이 변경됨

7

찾아보기 권한이 변경됨

8

쿼리 알림 환경이 변경됨

9

분할 뷰가 변경됨

10

커서 옵션이 변경됨

11

옵션(recompile)이 요청됨

사용자 동작

  1. 다음 쿼리를 실행하여 재컴파일을 발생시키는 문을 봅니다. 여기서 sql_handle, starting_offset, ending_offset 및 plan_handle 자리 표시자는 오류 메시지는 오류 메시지에 지정된 값으로 바꾸십시오. 임시 및 준비된 Transact-SQL 문의 경우 database_nameobject_name 열은 NULL입니다.

    SELECT DB_NAME(st.dbid) AS database_name

    , OBJECT_NAME(st.objectid) AS object_name

    , st.text

    FROM sys.dm_exec_query_stats AS qs

    CROSS APPLY sys.dm_exec_sql_text (sql_handle) AS st

    WHERE qs.statement_start_offset = starting_offset

    AND qs.statement_end_offset = ending_offset

    AND qs.plan_handle = plan_handle;

  2. 이유 코드 설명에 따라 문, 일괄 처리 또는 프로시저를 수정하여 재컴파일을 방지합니다. 예를 들어 저장 프로시저에는 하나 이상의 SET 문이 포함되어 있을 수 있는데, 이러한 문을 프로시저에서 제거해야 합니다. 재컴파일의 원인 및 해결 방법에 대한 추가 예는 SQL Server 2005에서의 일괄 컴파일, 다시 컴파일 및 계획 캐싱 문제(Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005)를 참조하십시오.

  3. 문제가 지속되면 Microsoft 고객 지원 서비스에 문의하십시오.