MSSQLSERVER_2814MSSQLSERVER_2814

세부 정보Details

제품 이름Product Name SQL ServerSQL Server
이벤트 IDEvent ID 28142814
이벤트 원본Event Source MSSQLSERVERMSSQLSERVER
구성 요소Component SQLEngineSQLEngine
심볼 이름Symbolic Name PR_POSSIBLE_INFINITE_RECOMPILEPR_POSSIBLE_INFINITE_RECOMPILE
메시지 텍스트Message Text SQLHANDLE %hs, PlanHandle %hs, 시작 오프셋 %d, 끝 오프셋 %d에 대해 발생 가능한 무한 재컴파일이 검색되었습니다.A possible infinite recompile was detected for SQLHANDLE %hs, PlanHandle %hs, starting offset %d, ending offset %d. 마지막 재컴파일 이유는 %d이었습니다.The last recompile reason was %d.

설명Explanation

하나 이상의 문으로 인해 쿼리 일괄 처리가 50회 이상 재컴파일되었습니다.One or more statements caused the query batch to recompile at least 50 times. 재컴파일이 더 이상 수행되지 않도록 하려면 지정된 문을 수정해야 합니다.The specified statement should be corrected to avoid further recompilations.

다음 표에서는 재컴파일의 이유를 나열합니다.The following table lists the reasons for recompilation.

이유 코드Reason code DescriptionDescription
11 스키마가 변경됨Schema changed
22 통계가 변경됨Statistics changed
33 컴파일이 지연됨Deferred compile
44 설정된 옵션이 변경됨Set option changed
55 임시 테이블이 변경됨Temp table changed
66 원격 행 집합이 변경됨Remote rowset changed
77 찾아보기 권한이 변경됨For Browse permissions changed
88 쿼리 알림 환경이 변경됨Query notification environment changed
99 파티션 뷰가 변경됨Partition view changed
1010 커서 옵션이 변경됨Cursor options changed
1111 옵션(recompile)이 요청됨Option (recompile) requested

사용자 동작User Action

  1. 다음 쿼리를 실행하여 재컴파일을 발생시키는 문을 봅니다.View the statement causing the recompilation by running the following query. sql_handle, starting_offset, ending_offsetplan_handle 자리 표시자를 오류 메시지에 지정된 값으로 바꿉니다.Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. 임시 및 준비된 Transact-SQLTransact-SQL 문의 경우 database_nameobject_name 열은 NULL입니다.The database_name and object_name columns are NULL for ad hoc and prepared Transact-SQLTransact-SQL statements.

    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. 이유 코드 설명에 따라 문, 일괄 처리 또는 프로시저를 수정하여 재컴파일을 방지합니다.Based on the reason code description, modify the statement, batch, or procedure to avoid recompilations. 예를 들어 저장 프로시저에는 하나 이상의 SET 문이 포함되어 있을 수 있는데,For example, a stored procedure may contain one or more SET statements. 이러한 문을 프로시저에서 제거해야 합니다.These statements should be removed from the procedure. 재컴파일의 원인 및 해결 방법에 대한 추가 예는 Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005(SQL Server 2005에서의 일괄 컴파일, 다시 컴파일 및 계획 캐싱 문제)를 참조하세요.For additional examples of recompilation causes and resolutions, see Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005.

  3. 문제가 지속되면 Microsoft 고객 지원 서비스에 문의하십시오.If the problem persists, contact Microsoft Customer Support Services.

관련 항목:See Also

SQL:StmtRecompile 이벤트 클래스SQL:StmtRecompile Event Class