Comandos DBCC TRACEON / TRACEOFF y las marcas de seguimiento
Ya he indicado, cuando se inició con los Comandos DBCC, sobre los comandos varios o misceláneos, en esta ocasión hablare de dos comandos, el primero que habilita las marcas de seguimiento especificadas. Y el segundo que deshabilita las marcas de seguimiento especificados con el primer comando. Sin embargo es necesario mencionar que son las marcas de seguimiento y como pueden ayudarnos.
Se puede
indicar que las marcas de seguimiento son utilizadas para establecer algunas
características en el servidor de forma temporal, las que se habilitan o
deshabilitan con los comandos que hemos indicado. Es importante mencionar que
algunas marcas de seguimiento fueron introducidas para versiones específicas de Microsoft SQL Server, por lo que se hace necesario consultar el artículo asociado en
Microsoft Support.
Actualmente
se cuenta con 96 marcas de seguimiento, las cuales se clasifican en tres tipos
de ámbito, global, sesión y consulta. Las 96 se utilizan en el ámbito global,
esto es, se establecen en el nivel de servidor y se mantienen visibles para
todas las conexiones en el servidor. En
el ámbito de sesión, se encuentran 45 de las 96 definidas, esto significa que
las marcas de seguimiento se activarán únicamente para ser usadas en la
conexión que las establece no están visibles para las demás conexiones, como es
el caso de las globales. Cuando se habilita una marca de seguimiento en el
ámbito de sesión, si se cierra la conexión, se desactiva la marca de
seguimiento, dado que solo se habilito en esa conexión. Finalmente, las marcas
de seguimiento de ámbito de consulta, son aquellas que solo se habilitan en el contexto
de ejecución de la consulta, para ello se utiliza la opción QUERYTRACEON de la
instrucción SELECT.
No indicaré
cada una de las marcas de seguimiento que actualmente se manejan el Microsoft SQL Server,
toda la información relacionada con las marcas de seguimiento se encuentra en los libros en linea de Microsoft SQL Server.
Es
importante mencionar que deben tenerse en cuenta las siguientes reglas para su
aplicación:- Una marca de seguimiento de ámbito global debe habilitarse a nivel global, ya que en caso contrario no surtirá efecto. Es recomendable que se utilice la opción –T en la línea de comando de inicio de servicios de Microsoft SQL Server, lo cual garantizará que la marca permanezca activa después del reinició del servidor.
- Una marca de seguimiento que puede ser usada en cualquiera de los ámbitos mencionados, puede ser habilitada en el ámbito adecuado, teniendo en cuenta que una marca de seguimiento habilitada en el nivel de sesión nunca afectara otra sesión y el efecto se perderá cuando el SPID que inicio la marca de seguimiento sea cerrado.
Como puede
deducirse, la habilitación de las marcas de seguimiento se habilitan o
deshabilitan con los comandos DBCC TRACEON y DBCC TRACEOFF, que se analizan más
adelante. Como se ha mencionado anteriormente, también es posible utilizar la
opción –T en la línea de comando de
inicio de servicios, recordando que esta opción habilita a nivel global, no
será posible habilitar una marca de seguimiento a nivel sesión con la opción –T en el inició de los servicios. Para
el nivel de consulta debe utilizarse la opción QUERYTRACEON en la instrucción
SELECT. Es posible validar que marcas de seguimiento se encuentran activas
utilizando el comando DBCC TRACESTATUS.
No es mi
intención analizar la instrucción SELECT y sus opciones, solo mencionare un
ejemplo del uso de la opción QUERYTRACEON, para que se observe como se lleva a
cabo. Solo por mencionar un par de marcas de seguimiento que se encuentran en
el grupo de las que pueden utilizarse a nivel de consulta, sugiero que se
revise bien la documentación correspondiente a las marcas de seguimiento.
Marca de Seguimiento
|
Descripción
|
4137
|
Permite que Microsoft SQL Server genere
un plan usando mínima selectividad cuando estima predicados AND para filtrar teniendo
en cuenta la correlación, en el modelo de estimación de cardinalidad del
optimizador de consultas de Microsoft SQL Server 2012 y versiones anteriores.
|
4199
|
Habilita al optimizador de consultas (QO) los
cambios publicados en Microsoft SQL Server actualizaciones acumulativas y Service
Packs.
|
Teniendo
esto en cuenta, podemos llevar a cabo la consulta utilizando estas marcas de
seguimiento de la siguiente manera:
SELECT x
FROM correlated
WHERE f1 = 0 AND f2 = 1 OPTION
(QUERYTRACEON 4199, QUERYTRACEON 4137)
En esta
instrucción se lleva cabo la consulta a la tabla identificada como correlated
con la opción el uso de las marcas de seguimiento identificadas como 4199 y
4137. Por lo que esta consulta puede habilitar todas las revisiones que afectan
al plan controladas por marcas de seguimiento indicadas para la consulta.
DBCC TRACEON
Como se ha
indicado este comando habilita las marcas de seguimiento que se especifican.
Tratándose de un servidor de producción, es recomendable habilita las marcas se
seguimiento en todo el servidor para evitar un comportamiento impredecible, las
cuales pueden habilitarse, utilizando la opción –T en la línea de comandos de Microsoft SQL Server, o utilizando el comando
DBCC TRACEON.
Si bien las
marcas de seguimiento son utilizadas para personalizar algunas características
que controlen el funcionamiento de Microsoft SQL Server, las marcas de seguimiento
habilitadas permanecerán hasta que sean deshabilitadas.
La sintaxis
que puede utilizarse para habilitar una marca a nivel global es:
DBCC
TRACEON (trace_num, -1);
En este
caso se observa que se habilitara la marca de seguimiento trace_num a nivel
global, indicado con el argumento -1,La sintaxis que puede utilizarse para habilitar una marca a nivel de sesión es:
DBCC
TRACEON (trace_num);
Ahora se
observa que se habilitara la marca de seguimiento trace_num a nivel de sesión,
la ausencia del argumento -1, indica que es a nivel sesión.
Existen un
argumento opcional que pueden ser utilizado con el comando, éste es:
WITH NO_INFOMSGS
|
Suprime todos los
mensajes informativos.
|
Es preciso
indicar que pueden indicarse más de un número asociado con la marca de
seguimiento en el comando de tal forma que solo necesita separarse por comas.
Ejemplos de DBCC TRACEON
Mostraré algunos
ejemplos de uso de este comando:
DBCC TRACEON
(3205);
En este
ejemplo, se habilitara la marca de seguimiento identificada como 3205, que
permite deshabilitar la compresión de hardware para los controladores de cinta,
esta acción se lleva cabo a nivel de
sesión.
DBCC TRACEON
(3205, -1);
En el
ejemplo, se habilita la marca de seguimiento 3205, ahora a nivel global.
DBCC TRACEON (3205, 260, -1) WITH
NO_INFOMSGS;
En este
ejemplo, se habilitan las marcas 3205, para deshabilitar la compresión de
hardware para controladores de cinta y la marca 260, que imprime información de
versión sobre las bibliotecas de vínculos dinámicos (DLL) de procedimientos
almacenados extendidos, de forma global.DBCC TRACEOFF
Como se
mencionó anteriormente, este comando deshabilita las marcas de seguimiento que se indiquen,
previamente habilitadas.
La sintaxis
que puede utilizarse para deshabilitar una marca a nivel global es:
DBCC
TRACEOFF (trace_num, -1);
En este
caso se observa que se deshabilitará la marca de seguimiento trace_num a nivel
global, indicado con el argumento -1,
La sintaxis
que puede utilizarse para deshabilitar una marca a nivel de sesión es:
DBCC
TRACEOFF (trace_num);
Aquí se
observa que se deshabilitará la marca de seguimiento trace_num a nivel de
sesión, la ausencia del argumento -1, indica que es a nivel sesión. La sintaxis
e información completa de este comando se encuentran en los libros en línea de
Microsoft SQL Server.
Existen un
argumento opcional que pueden ser utilizado con el comando, éste es:
WITH NO_INFOMSGS
|
Suprime todos los
mensajes informativos.
|
Como en el
caso del comando DBCC TRACEON, pueden indicarse mas de un número asociado con
la marca de seguimiento en el comando de tal forma que solo necesita separarse
por comas.
Ejemplos de DBCC TRACEOFF
Mostraré algunos ejemplos de uso de este comando:
DBCC TRACEOFF
(3205);
Se
deshabilitará la marca de seguimiento identificada con el número 3205.
DBCC TRACEOFF (3205, -1) WITH
NO_INFOMSGS;
En el
ejemplo, se deshabilita la marca de seguimiento identificada con el número
3205, habilitada previamente a nivel global, sin emitir mensajes informativos.Comentarios.
Las marcas
de seguimiento son una de las herramientas que se tienen para el diagnóstico de
problemas de rendimiento, la depuración de procedimientos almacenados o la
determinación de problemas de sistemas complejos. Hay que revisar cada una de
las características específicas de operación de las marcas de seguimiento para
poder determinar cuál de ellas es la que puede ser utilizada con una versión
especifica de Microsoft SQL Server y el propósito de diagnóstico requerido en su
utilización.
Recuérdese
que el uso del comando DBCC TRACEON para establecer una marca de seguimiento a
nivel global solo permanecerá activa, mientras no se utilice el comando DBCC
TRACEOFF para deshabilitarla o el servicio de Microsoft SQL Server no sea reiniciado, ya
que una vez que se ha reiniciado la marca de seguimiento no se habilitara, si
se desea que la marca de seguimiento se mantenga en operación debe utilizarse
la opción –T en la línea de comando
de inicio de servicios de Microsoft SQL Server.
Microsoft
ha indicado que es posible que en futuras versiones de Microsoft SQL Server no se admita
el comportamiento de algunas de las marcas de seguimiento, por lo que hay que
validar el uso de alguna de las marcas de seguimiento actuales en versiones
posteriores.
No hay comentarios.:
Publicar un comentario