Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 | En möjlig oändlig omkompilering identifierades för SQLHANDLE %hs, PlanHandle %hs, startförskjutning %d, slutförskjutning %d. Den senaste omkompileringsorsaken var %d. |
Explanation
En eller flera instruktioner gjorde att frågebatchen kompilera om minst 50 gånger. Den angivna instruktionen bör korrigeras för att undvika ytterligare omkompileringar.
I följande tabell visas orsakerna till omkompilering.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Ange alternativändring |
| 5 | Temporär tabell har ändrats |
| 6 | Fjärrraduppsättningen har ändrats |
| 7 | För ändrade bläddrarbehörigheter |
| 8 | Frågemeddelandemiljön har ändrats |
| 9 | PartitionView changed |
| 10 | Marköralternativen har ändrats |
| 11 | Alternativet (kompilera om) begärdes |
| 12 | Parametriserad plan utrensad |
| 13 | Linjärisering av testplan |
| 14 | Plan som påverkar databasversionen har ändrats |
| 15 | Policy för tvingande av Query Store-planer har ändrats |
| 16 | Det gick inte att tvinga fram query Store-planen |
| 17 | Query Store saknar en plan |
| 18 | Interleaved-körning krävs omkompilering |
| 19 | Inte en omkompilering |
| 20 | Frågearkivtips har ändrats |
| 21 | Frågebutikens tipsprogram misslyckades |
| 22 | Query Store-omkompilering för att samla in markörfråga |
| 23 | Kompilera om för att rensa planen för multiplansutskick |
Om du vill visa alla kompileringskoder kör du följande fråga för dynamisk hanteringsvy:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Visa instruktionen som orsakar omkompileringen genom att köra följande fråga. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. Kolumnerna
database_nameochobject_nameärNULLför ad hoc och förberedda Transact-SQL-instruktioner.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 */Baserat på beskrivningen av orsakskoden ändrar du instruktionen, batchen eller proceduren för att undvika omkompileringar. En lagrad procedur kan till exempel innehålla en eller flera
SETinstruktioner. Dessa instruktioner bör tas bort från proceduren.Fler exempel på orsaker och lösningar för omkompilering finns i Batch-kompilering, omkompilering och plancachelagringsproblem i SQL Server 2005. Mer information om omkompileringar finns i Kompilera om körningsplaner.
Kontakta Microsofts kundtjänst om problemet kvarstår.