MSSQLSERVER_2814MSSQLSERVER_2814

DettagliDetails

Nome prodottoProduct Name SQL ServerSQL Server
ID eventoEvent ID 28142814
Origine eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbolicoSymbolic Name PR_POSSIBLE_INFINITE_RECOMPILEPR_POSSIBLE_INFINITE_RECOMPILE
Testo del messaggioMessage Text Rilevata una possibile ricompilazione infinita per SQLHANDLE %hs, PlanHandle %hs, offset iniziale %d, offset finale %d.A possible infinite recompile was detected for SQLHANDLE %hs, PlanHandle %hs, starting offset %d, ending offset %d. Motivo dell'ultima ricompilazione: % d.The last recompile reason was %d.

SpiegazioneExplanation

Una o più istruzioni ha determinato la ricompilazione del batch di query almeno 50 volte.One or more statements caused the query batch to recompile at least 50 times. Per evitare ulteriori ricompilazioni, è necessario correggere l'istruzione specificata.The specified statement should be corrected to avoid further recompilations.

I motivi della ricompilazione sono elencati nella tabella seguente.The following table lists the reasons for recompilation.

Codice motivoReason code DescriptionDescription
11 Schema modificatoSchema changed
22 Statistiche modificateStatistics changed
33 Compilazione posticipataDeferred compile
44 Opzione impostata modificataSet option changed
55 Tabella temporanea modificataTemp table changed
66 Set di righe remoto modificatoRemote rowset changed
77 Autorizzazioni FOR BROWSE modificateFor Browse permissions changed
88 Ambiente di notifica query modificatoQuery notification environment changed
99 Vista partizionata modificataPartition view changed
1010 Opzioni cursore modificateCursor options changed
1111 Opzione (recompile) richiestaOption (recompile) requested

Azione dell'utenteUser Action

  1. Visualizzare l'istruzione che determina la ricompilazione mediante l'esecuzione della query seguente.View the statement causing the recompilation by running the following query. Sostituire i segnaposto sql_handle, starting_offset, ending_offset e plan_handle con i valori specificati nel messaggio di errore.Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. Le colonne database_name e object_name sono NULL per le istruzioni Transact-SQLTransact-SQL ad hoc e preparate.The database_name and object_name columns are NULL for ad hoc and prepared Transact-SQLTransact-SQL statements.

    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 (*sql_handle*) AS st  
    WHERE qs.statement_start_offset = *starting_offset*  
    AND qs.statement_end_offset = *ending_offset*  
    AND qs.plan_handle = *plan_handle*;
    
  2. In base alla descrizione del codice motivo, modificare l'istruzione, il batch o la procedura per evitare ricompilazioni.Based on the reason code description, modify the statement, batch, or procedure to avoid recompilations. Una stored procedure può contenere, ad esempio, uno o più istruzioni SET.For example, a stored procedure may contain one or more SET statements. Queste istruzioni devono essere rimosse dalla procedura.These statements should be removed from the procedure. Per esempi aggiuntivi sulle cause e sulle risoluzioni dei problemi di ricompilazione, vedere Problematiche di compilazione batch, ricompilazione e memorizzazione dei piani nella cache in SQL Server 2005.For additional examples of recompilation causes and resolutions, see Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005.

  3. Se il problema persiste, contattare il Servizio Supporto Tecnico Clienti Microsoft.If the problem persists, contact Microsoft Customer Support Services.

Vedere ancheSee Also

Classe di evento SQL:StmtRecompileSQL:StmtRecompile Event Class