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!