Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 | Se detectó una posible recompilación infinita de SQLHANDLE %hs, PlanHandle %hs, desplazamiento de inicio %d, desplazamiento de fin %d. El motivo de la última recompilación fue % d. |
Explanation
Una o más instrucciones hicieron que el lote de consultas se recompilara por lo menos 50 veces. La instrucción especificada se debe corregir para evitar más recompilaciones.
En la siguiente tabla se muestran los motivos de la recompilación.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Establecer cambio de opción |
| 5 | Cambio en tabla Temp |
| 6 | Conjunto de filas remoto modificado |
| 7 | Para ver los permisos modificados |
| 8 | Entorno de notificación de consultas modificado |
| 9 | PartitionView changed |
| 10 | Opciones de cursor modificadas |
| 11 | Opción (recompilar) solicitada. |
| 12 | Plan con parámetros vaciado |
| 13 | Linealización del plan de prueba |
| 14 | Plan que afecta a la versión de la base de datos modificada |
| 15 | Plan del Almacén de consultas que obliga a cambiar la directiva |
| 16 | Error al forzar el plan del Almacén de consultas |
| 17 | Almacén de consultas que falta el plan |
| 18 | Recompilación necesaria para la ejecución intercalada |
| 19 | No una recompilación |
| 20 | Sugerencias del Almacén de consultas modificadas |
| 21 | Error en la aplicación de sugerencias del Almacén de consultas |
| 22 | Recompilación del Almacén de consultas para capturar la consulta de cursor |
| 23 | Volver a compilar para limpiar el plan de distribuidor multiplan |
Para ver todos los códigos de compilación, ejecute la siguiente consulta de vista de administración dinámica:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Vea la instrucción que produce la recompilación ejecutando la consulta siguiente. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. Las
database_namecolumnas yobject_namesonNULLpara instrucciones ad hoc y preparadas 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 */Según sea la descripción del código del motivo, modifique la instrucción, lote o procedimiento para evitar las recompilaciones. Por ejemplo, un procedimiento almacenado puede contener una o varias
SETinstrucciones. Estas instrucciones se deben quitar del procedimiento.Para obtener más ejemplos de causas y resoluciones de recompilación, vea Problemas de compilación por lotes, recompilación y almacenamiento en caché de planes en SQL Server 2005. Para obtener más información sobre las recompilaciones, vea Recompilar planes de ejecución.
Si el problema persiste, póngase en contacto con los Servicios de soporte al cliente (CSS) de Microsoft.