Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 | U SQLHANDLE %hsbyl zjištěn možný nekonečný recompilace, PlanHandle %hs, počáteční posun %d, koncový posun %d. Poslední důvod rekompilu byl %d. |
Explanation
Jeden nebo více příkazů způsobila, že se dávka dotazu alespoň 50krát znovu zkompilovala. Zadaný příkaz by měl být opraven, aby se zabránilo dalšímu rekompilace.
Následující tabulka uvádí důvody pro rekompilace.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Nastavení změny možností |
| 5 | Dočasná tabulka se změnila. |
| 6 | Změna vzdálené sady řádků |
| 7 | Změna oprávnění pro procházení |
| 8 | Změna prostředí oznámení dotazu |
| 9 | PartitionView changed |
| 10 | Změněné možnosti kurzoru |
| 11 | Požadována možnost (rekompilovat) |
| 12 | Vyprázdněný parametrizovaný plán |
| 13 | Lineární plánování testů |
| 14 | Plán ovlivňující změněnou verzi databáze |
| 15 | Změna zásad vynucení plánu úložiště dotazů |
| 16 | Selhání plánu úložiště dotazů |
| 17 | V úložišti dotazů chybí plán. |
| 18 | Prokládání požadovaného rekompilace provádění |
| 19 | Nejedná se o rekompil |
| 20 | Změněné rady úložiště dotazů |
| 21 | Aplikace nápovědy úložiště dotazů selhala. |
| 22 | Rekompilování úložiště dotazů za účelem zachycení dotazu kurzoru |
| 23 | Překompilování pro vyčištění plánu dispečera vícerovek |
Pokud chcete zobrazit všechny kódy kompilace, spusťte následující dotaz zobrazení dynamické správy:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Zobrazte příkaz způsobující rekompilace spuštěním následujícího dotazu. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message.
object_nameSloupcedatabase_namejsouNULLurčené pro ad hoc a připravené příkazy 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 */Na základě popisu kódu důvodu upravte příkaz, dávku nebo proceduru, abyste se vyhnuli rekompilace. Uložená procedura může například obsahovat jeden nebo více
SETpříkazů. Tyto příkazy by měly být z postupu odebrány.Další příklady příčin a řešení rekompilace najdete v tématu Dávkové kompilace, rekompilace a plánování problémů s ukládáním do mezipaměti v SQL Serveru 2005. Další informace o rekompilace naleznete v tématu Rekompil execution plans.
Pokud potíže potrvají, obraťte se na služby zákaznické podpory Microsoftu.