Hay muchas banderas de seguimiento por ahí. Algunos están bien documentados, otros no, y otros llegaron al estado de comportamiento predeterminado en la versión 2016. Además de los canales de soporte oficiales, los empleados de Microsoft, etc., ¿cuáles son las formas de encontrar nuevos indicadores de seguimiento?
He leído un par de publicaciones recientes de Aaron Bertrand aquí y aquí , pero no vi nada sobre las nuevas banderas de seguimiento.
Copié los datos y el archivo de registro de mssqlsystemresource en una nueva ubicación, y los adjunté como una base de datos normal para examinar las tablas y vistas del sistema, pero no detecté nada de inmediato. Pensé en hacer una lista de indicadores de rastreo conocidos y recorrer números que no estaban en esa lista para ver cuáles permitiría DBCC TRACEON, pero quería hacer la pregunta aquí primero.
Suponiendo que el comando DBCC para habilitarlos tiene que registrarse con algún recurso para asegurarse de que el Indicador de seguimiento sea válido, ¿a dónde se dirige? ¿Hay un archivo .dll o algún otro archivo del sistema que contenga una lista?
Sé que la pregunta arroja una amplia red, pero lo que estimuló esto fue leer sobre una Bandera de seguimiento con un comportamiento específico específico junto con una nueva característica en 2016 que no estaba teniendo el efecto descrito. Mi pensamiento inicial fue que quizás los números se transpusieron de alguna manera, como 7129 convirtiéndose en 7219. Tenía la esperanza de obtener una lista de indicadores de seguimiento válidos dentro de un rango, digamos 7000-7999, para buscar permutaciones. Probarlos todos, tanto como indicadores DBCC TRACEON como parámetros de inicio, sería una molestia, combinada con la prueba de los resultados contra el comportamiento de la característica.
fuente
En su mayor parte, se trata de tener el tiempo y los recursos emocionales para gastar en su búsqueda.
Ciertamente, es posible escribir un script para recorrer los posibles números de marca de seguimiento y analizar los efectos, pero esto no siempre es fructífero. Hay muchas razones para eso, pero las frustraciones comunes incluyen el hecho de que algunas marcas de rastreo solo son efectivas en combinación con otras, algunas solo funcionan con el
-T
inicio o cuando se usan con otrasDBCC TRACEON
, solo conOPTION (QUERYTRACEON)
. Algunos requieren comandos indocumentados, o extensiones de comandos, o para que se habilite también una característica particular. Algunos solo producen efectos si sabes dónde buscar esos efectos. Y así sucesivamente y ... mucho ... así sucesivamente.Dicho esto, quizás la técnica más efectiva es pasar paso a paso a través de la ejecución de una consulta o comando en particular con un depurador u otra herramienta de creación de perfiles adjunta, comparando las rutas tomadas con las marcas de seguimiento activadas y desactivadas. Si esto suena lento, es porque lo es.
Para mí, algo tiene que ser potencialmente muy interesante o estar relacionado con un problema del mundo real sin una mejor solución para que yo piense siquiera en abordarlo. También es útil si ha pasado por este proceso cientos o miles de veces antes, para tener una idea general del tipo de cosas que está buscando, qué rango de indicadores de rastreo es más probable que sea efectivo y qué parte del código base va a ser interesante.
Establecer un punto de interrupción
CSessionTraceFlags::CheckSessionTraceInternal
y verificar el valor deledx
registro (para ver qué indicador de seguimiento se está comprobando) puede ser útil en casos simples, pero los casos interesantes a menudo no son simples, y no todos los indicadores de seguimiento se verifican en el punto donde afectar la ruta del código tomada.Hay una lista bastante pequeña de banderas de rastreo oficiales . Estas son las banderas que se han probado completamente y son (y serán) compatibles con CSS y, en última instancia, los desarrolladores de productos. También son banderas con un caso de uso lo suficientemente común como para que valga la pena documentarlo.
Cualquier otro indicador de rastreo que encuentre es una curiosidad que podría tener efectos inesperados en diversas situaciones (diferentes compilaciones, SKU, configuraciones de seguridad, diferentes características ... cualquier otra cosa que pueda o no pueda pensar). Estos solo serán 'apoyados' por la persona que escribió sobre ellos, si es que lo hicieron.
Hay varias listas no oficiales, la mejor que conozco es una colección tópica de banderas de SQL Server de Aaron Morelli (actualmente en v6, abril de 2016).
Dicho todo esto, Microsoft CSS (en última instancia) tiene acceso a todos los indicadores de seguimiento, por lo que pueden asesorarlo sobre cualquier cosa que encuentre, incluso si no están en la lista oficial. Pueden elegir no decir nada, por supuesto, y puede haber una tarifa involucrada; Realmente no lo sé, nunca había tomado esa ruta yo mismo
fuente
Mantenemos una colección de indicadores de seguimiento en github (ahora 599 indicadores de seguimiento):
Indicadores de seguimiento de Microsoft SQL Server
Además, muy buena técnica descrita por Brent Ozar en su gran artículo Bad Idea Jeans: Finding Udocumented Trace Flags y Joe Obbish en este increíble artículo Un método para encontrar trazas
fuente