Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 | Rilevata una possibile ricompilazione infinita per SQLHANDLE %hs, PlanHandle %hs, offset iniziale %d, offset finale %d. Motivo dell'ultima ricompilazione: % d. |
Explanation
Una o più istruzioni ha determinato la ricompilazione del batch di query almeno 50 volte. Per evitare ulteriori ricompilazioni, è necessario correggere l'istruzione specificata.
I motivi della ricompilazione sono elencati nella tabella seguente.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Impostare la modifica dell'opzione |
| 5 | Tabella temporanea modificata |
| 6 | Set di righe remoto modificato |
| 7 | Per le autorizzazioni di esplorazione modificate |
| 8 | Ambiente di notifica query modificato |
| 9 | PartitionView changed |
| 10 | Opzioni cursore modificate |
| 11 | Opzione (recompile) richiesta |
| 12 | Piano parametrizzato azzerato |
| 13 | Linearizzazione del piano di test |
| 14 | Piano che influisce sulla versione del database modificato |
| 15 | Politica di forzatura del piano del Query Store modificata |
| 16 | Forzatura del piano nel Query Store fallita |
| 17 | Piano mancante nell'archivio query |
| 18 | Esecuzione interleaved richiesta di ricompilazione |
| 19 | Non una ricompilazione |
| 20 | Hint di Query Store modificati |
| 21 | L'applicazione degli hint di Query Store non è riuscita |
| 22 | Ricompilazione di Query Store per acquisire la query del cursore |
| 23 | Ricompilazione per pulire il piano del dispatcher multipiattaforma |
Per visualizzare tutti i codici di compilazione, eseguire la query di visualizzazione a gestione dinamica seguente:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Visualizzare l'istruzione che determina la ricompilazione mediante l'esecuzione della query seguente. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. Le
database_namecolonne eobject_namesonoNULLper istruzioni ad hoc e preparate 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 */In base alla descrizione del codice motivo, modificare l'istruzione, il batch o la procedura per evitare ricompilazioni. Ad esempio, una stored procedure può contenere una o più
SETistruzioni. Queste istruzioni devono essere rimosse dalla procedura.Per altri esempi di cause e risoluzioni della ricompilazione, vedere Compilazione batch, ricompilazione e problemi di memorizzazione nella cache dei piani in SQL Server 2005. Per altre informazioni sulle ricompilazione, vedere Ricompilare i piani di esecuzione.
Se il problema persiste, contattare il Servizio Supporto Tecnico Clienti Microsoft.