T-SQL - OPCIÓN (FAST x) y marca de seguimiento 8722

9

He buscado mucho tiempo y todavía no he encontrado la respuesta a mi problema.

Nuestro Dynamics AX está generando consultas con la sugerencia de consulta OPTION (FAST x), que a veces obliga a utilizar un plan de ejecución incorrecto. Los desarrolladores dicen que es por defecto y que es difícil de cambiar (tiene que arreglarse en todos los formularios potencialmente).

Así que estaba buscando una forma de anular estas sugerencias usando marcas de seguimiento. Encontré la hermosa bandera de seguimiento 8722 que se afirma que hace que SQL Server ignore algunas sugerencias de consulta, especialmente las de la cláusula OPTION.

Sin embargo, esto no funciona en mi caso. Traté de habilitar la marca de seguimiento 8602 (deshabilitar las sugerencias de índice) también, pero mi consulta todavía se está ejecutando con la sugerencia FAST x (es mucho más lenta que cuando realmente elimino la cláusula OPTION).

Traté de borrar el caché del plan también, sin éxito.

¿Algunas ideas? ¿Me estoy perdiendo algo?

PD: habilité las marcas de seguimiento a nivel mundial, esta es la edición para desarrolladores de SQL Server 2012

Nelson 2.0
fuente
1
¿Cómo activó las banderas de seguimiento? ¿Lo activó a través del inicio del servidor o usando dbcc traceon? dbcc traceon es un indicador de seguimiento por conexión, por lo que activarlo en una conexión de cliente no afecta a otras conexiones de servidor. Para activarlo en todo el servidor, debe agregar -T <traceflagnumber> a la línea de comando de inicio. Creo que puede usar un rastreo de dbcc (flag1, flag2, ..., - 1) para aplicarlo en todo el servidor, pero nunca lo he probado.
Mike
Hola Mike, habilité las marcas de rastreo a nivel mundial utilizando DBCC TRACEON (8722, -1) y luego verifiqué el estado con DBCC TRACESTATUS. Tal vez el indicador de seguimiento ya no sea oficialmente compatible o realmente necesite ponerlo en el parámetro de inicio y reiniciar el servicio, o sea el tema de CU3 (estoy ejecutando 2012 SP2 RTM).

Respuestas:

10

Hasta donde sé, las banderas de rastreo 8722, 8755 y 8602 nunca se documentaron oficialmente. La última vez que recuerdo que fueron efectivos fue en SQL Server 2000, por lo que no es terriblemente sorprendente que descubran que se ignoran en SQL Server 2012.

Para patrones de consulta específicos, a menudo es posible eliminar la FAST nsugerencia utilizando guías de plan. Aun así, la mejor solución es hacer que los desarrolladores de AX lo arreglen en el lado de la aplicación.

Paul White 9
fuente