Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 | Er is een mogelijke oneindige hercompilatie gedetecteerd voor SQLHANDLE-%hs, PlanHandle-%hs, beginverschil %d, eindverschil %d. De laatste reden voor opnieuw compileren was %d. |
Explanation
Een of meer instructies hebben ertoe geleid dat de querybatch minstens 50 keer opnieuw wordt gecompileerde. De opgegeven instructie moet worden gecorrigeerd om verdere hercompilaties te voorkomen.
De volgende tabel bevat de redenen voor hercompilatie.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Optie wijzigen instellen |
| 5 | Tijdelijke tabel gewijzigd |
| 6 | Externe rijenset is gewijzigd |
| 7 | Bladerenmachtigingen zijn gewijzigd |
| 8 | Querymeldingsomgeving gewijzigd |
| 9 | PartitionView changed |
| 10 | Cursoropties gewijzigd |
| 11 | Optie (opnieuw compileren) aangevraagd |
| 12 | Geparameteriseerd plan leeggemaakt |
| 13 | Lineaire planning testen |
| 14 | Plan dat invloed heeft op de databaseversie gewijzigd |
| 15 | Query Store-plan dat beleid afdwingt gewijzigd |
| 16 | Het afdwingen van een Query Store-plan is mislukt |
| 17 | Query Store mist het plan |
| 18 | Vereiste hercompilatie voor interleaved-uitvoering |
| 19 | Geen hercompileren |
| 20 | Query Store-hints zijn gewijzigd |
| 21 | Query Store-hints-toepassing is mislukt |
| 22 | Query Store opnieuw compileren om cursorquery vast te leggen |
| 23 | Opnieuw compileren om het multiplan-dispatcherplan op te schonen |
Als u alle compilatiecodes wilt weergeven, voert u de volgende dynamische beheerweergavequery uit:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Bekijk de instructie die de hercompilatie veroorzaakt door de volgende query uit te voeren. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. De
database_nameenobject_namekolommen zijnNULLbedoeld voor ad-hoc en voorbereide Transact-SQL instructies.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 */Wijzig de instructie, batch of procedure op basis van de beschrijving van de redencode om hercompilaties te voorkomen. Een opgeslagen procedure kan bijvoorbeeld een of meer
SETinstructies bevatten. Deze instructies moeten worden verwijderd uit de procedure.Zie Batch-compilatie- en hercompilatieproblemen in SQL Server 2005 voor meer voorbeelden van problemen met opnieuw compileren. Zie Uitvoeringsplannen opnieuw compileren voor meer informatie over hercompilaties.
Als het probleem zich blijft voordoen, neemt u contact op met de klantenservice van Microsoft.