Applies to:SQL Server
Details
| Attribute | Value |
|---|---|
| Product Name | SQL Server |
| Event ID | 2814 |
| Event Source | MSSQLSERVER |
| Component | SQLEngine |
| Symbolic Name | PR_POSSIBLE_INFINITE_RECOMPILE |
| Message Text | SQLHANDLE %hs, PlanHandle %hs, 오프셋 %d 시작, 종료 오프셋 %d에 대해 가능한 무한 다시 컴파일이 검색되었습니다. 마지막 다시 컴파일 이유는 %d입니다. |
Explanation
하나 이상의 문으로 인해 쿼리 일괄 처리가 50번 이상 다시 컴파일되었습니다. 재컴파일이 더 이상 수행되지 않도록 하려면 지정된 문을 수정해야 합니다.
다음 표에서는 다시 컴파일하는 이유를 나열합니다.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | 옵션 변경 설정 |
| 5 | 임시 테이블이 변경됨 |
| 6 | 원격 행 집합 변경됨 |
| 7 | 찾아보기 권한이 변경되었습니다. |
| 8 | 쿼리 알림 환경 변경됨 |
| 9 | PartitionView changed |
| 10 | 커서 옵션 변경됨 |
| 11 | 요청된 옵션(다시 컴파일) |
| 12 | 매개 변수가 있는 계획 플러시됨 |
| 13 | 계획 선형화 테스트 |
| 14 | 변경된 데이터베이스 버전에 영향을 주는 계획 |
| 15 | 쿼리 저장소 계획 강제 정책 변경 |
| 16 | 쿼리 저장소 계획 강제 실패 |
| 17 | 쿼리 저장소에 계획이 없습니다. |
| 18 | 인터리브 실행 필요 다시 컴파일 |
| 19 | 다시 컴파일되지 않음 |
| 20 | 쿼리 저장소 힌트가 변경됨 |
| 21 | 쿼리 저장소 힌트 애플리케이션 실패 |
| 22 | 커서 쿼리를 캡처하기 위한 쿼리 저장소 다시 컴파일 |
| 23 | 다중 계획 디스패처 계획을 정리하기 위한 다시 컴파일 |
모든 컴파일 코드를 보려면 다음 동적 관리 뷰 쿼리를 실행합니다.
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
다음 쿼리를 실행하여 다시 컴파일을 일으키는 문을 봅니다. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. 및
object_name열은database_nameNULL임시 및 준비된 Transact-SQL 문을 위한 것입니다.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(0x01000600B74C2A1300D2582A2100000000000000000000000000000000000000000000000000000000000000 /* replace the 0x01000600B... value with the actual sql_handle */ ) AS st WHERE qs.statement_start_offset = 123 /* replace 123 with actual starting_offset value */ AND qs.statement_end_offset = 456 /* replace 456 with actual ending_offset value */ AND qs.plan_handle = 0x06000100A27E7C1FA821B10600; /* replace 0x06000100A27E7C1FA821B10600 with actual plan_handle value */이유 코드 설명에 따라 문, 일괄 처리 또는 프로시저를 수정하여 다시 컴파일하지 않도록 합니다. 예를 들어 저장 프로시저에는 하나 이상의
SET문이 포함될 수 있습니다. 이러한 문은 프로시저에서 제거해야 합니다.다시 컴파일 원인 및 해결 방법의 더 많은 예제는 SQL Server 2005의 Batch 컴파일, 다시 컴파일 및 계획 캐싱 문제를 참조하세요. 다시 컴파일에 대한 자세한 내용은 실행 계획 다시 컴파일을 참조하세요.
문제가 지속되면 Microsoft 고객 지원 서비스에 문의하십시오.