Published on

March 15, 2019

Comprendiendo las trazas del lado del servidor en SQL Server

Bienvenido a la segunda parte de nuestra serie de tres partes sobre cómo crear, ejecutar y programar trazas del lado del servidor en SQL Server. En el artículo anterior, discutimos los beneficios de utilizar trazas del lado del servidor en lugar de SQL Server Profiler en entornos de producción. Si aún no lo has leído, te recomendamos volver atrás y echarle un vistazo antes de continuar con este.

En este artículo, profundizaremos en el script de traza generado por SQL Server Profiler y exploraremos cómo iniciar y detener trazas del lado del servidor utilizando procedimientos T-SQL.

Modificando el script

Comencemos examinando un script de traza del lado del servidor relativamente simple que fue generado para nosotros por SQL Server Profiler. El script incluye varias secciones que desglosaremos para una mejor comprensión.

/****************************************************/
/* Creado por: SQL Server 2008 Profiler             */
/* Fecha: 08/27/2009 08:59:12 AM                     */
/****************************************************/
-- Crear una cola
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 500

-- Por favor, reemplaza el texto InsertFileNameHere, con un nombre de archivo apropiado
-- precedido por una ruta, por ejemplo, c:\MiCarpeta\MiTraza. La extensión .trc
-- se agregará automáticamente al nombre de archivo. Si estás escribiendo desde
-- un servidor remoto a una unidad local, utiliza una ruta UNC y asegúrate de que el servidor tenga
-- acceso de escritura a tu recurso compartido de red
exec @rc = sp_trace_create @TraceID output, 0, N'E:\demo\demotrace2', @maxfilesize, NULL
if (@rc != 0) goto error

-- Establecer los eventos
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 27, 7, @on
exec sp_trace_setevent @TraceID, 27, 15, @on
exec sp_trace_setevent @TraceID, 27, 55, @on
...
	

El script comienza declarando variables y estableciendo sus valores. Es importante asegurarse de que los valores exportados desde SQL Server Profiler estén configurados correctamente. Presta atención a la variable @maxfilesize, que determina la cantidad de datos a capturar. En este ejemplo, lo hemos establecido en 500 MB.

Creando la traza

La siguiente parte del script crea la traza utilizando el procedimiento almacenado sp_trace_create. Debes proporcionar la ruta completamente calificada para el archivo de salida que almacenará los datos capturados. El script agrega automáticamente la extensión .trc al nombre de archivo, por lo que no es necesario incluirla.

exec @rc = sp_trace_create @TraceID output, 0, N'E:\demo\demotrace2', @maxfilesize, NULL
	

El procedimiento sp_trace_create también acepta parámetros adicionales que no se generan automáticamente al exportar desde SQL Server Profiler. Por ejemplo, puedes especificar la opción TRACE_FILE_ROLLOVER y el parámetro @filecount para permitir que la información de la traza se extienda a varios archivos. Esto puede ser útil cuando se trata con grandes cantidades de datos.

Especificando los eventos

La siguiente sección del script define los eventos que la traza capturará. El procedimiento almacenado sp_trace_setevent se ejecuta repetidamente para especificar cada evento. Esta sección puede ser bastante extensa si se monitorean numerosos eventos.

-- Establecer los eventos
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 27, 7, @on
exec sp_trace_setevent @TraceID, 27, 15, @on
exec sp_trace_setevent @TraceID, 27, 55, @on
...
	

Filtrando los eventos

Los filtros se pueden establecer utilizando el procedimiento almacenado sp_trace_setfilter. Esto te permite reducir la traza a bases de datos o consultas específicas que cumplan ciertos criterios. Establecer filtros es particularmente importante en entornos con múltiples bases de datos.

-- Establecer los filtros
declare @intfilter int
declare @bigintfilter bigint
set @intfilter = 6
exec sp_trace_setfilter @TraceID, 3, 0, 0, @intfilter
set @intfilter = 5
exec sp_trace_setfilter @TraceID, 3, 1, 0, @intfilter
	

Iniciando y deteniendo la traza

Una vez que la traza está completamente definida dentro de SQL Server, puedes iniciarla estableciendo su estado utilizando el procedimiento almacenado sp_trace_setstatus.

-- Establecer el estado de la traza para iniciarla
exec sp_trace_setstatus @TraceID, 1
	

El procedimiento almacenado sp_trace_setstatus requiere dos parámetros. El primer parámetro es la traza a modificar, que es el resultado del procedimiento sp_trace_create. El segundo parámetro representa el estado de la traza. Un valor de 0 detiene la traza, 1 la inicia y 2 elimina la traza del servidor.

Conclusión

Ahora que tenemos una mejor comprensión del script de traza y cómo iniciar y detener manualmente las trazas del lado del servidor, podemos pasar a la siguiente parte de nuestra serie. En el próximo artículo, exploraremos cómo programar trazas del lado del servidor, lo que nos permitirá recopilar automáticamente datos en varios momentos a lo largo del día y la semana laboral. Esta información será invaluable para evaluar nuestros sistemas.

Mantente atento a la última parte de nuestra serie, ¡y hasta entonces, feliz trazado!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.