Cómo crear una traza (Transact-SQL)

En este tema se describe el modo de utilizar procedimientos almacenados para crear una traza.

Para crear una traza

  1. Ejecute sp_trace_create con los parámetros necesarios para crear una traza. El nuevo seguimiento estará en estado de detención (status es 0).

  2. Ejecute sp_trace_setevent con los parámetros necesarios para seleccionar los eventos y las columnas de las que va a realizar un seguimiento.

  3. Opcionalmente, ejecute sp_trace_setfilter para establecer un filtro o una combinación de filtros.

    sp_trace_setevent y sp_trace_setfilter sólo se pueden ejecutar en trazas existentes que estén detenidas.

    Nota importanteImportante

    A diferencia de los procedimientos almacenados normales, los parámetros de todos los procedimientos almacenados del Analizador de SQL Server (sp_trace_xx) deben escribirse de forma precisa y no admiten la conversión de tipos de datos automática. Si no se llama a estos parámetros con los tipos de datos de parámetros de entrada correctos, según se especifica en la descripción del argumento, el procedimiento almacenado devuelve un error.

Ejemplo

En el ejemplo de código siguiente se muestra la forma de crear un seguimiento con Transact-SQL. Se divide en tres secciones: crear el seguimiento, rellenar el archivo de seguimiento y detener el seguimiento. Personalice el seguimiento agregando los eventos que desee seguir. Para obtener la lista de eventos y columnas, vea sp_trace_setevent (Transact-SQL).

En el código siguiente se crea un seguimiento, se agregan los eventos al seguimiento y, a continuación, se inicia el seguimiento:

DECLARE @RC int, @TraceID int, @on BIT
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\SampleTrace'

-- Select the return code to see if the trace creation was successful.
SELECT RC = @RC, TraceID = @TraceID

-- Set the events and data columns you need to capture.
SELECT @on = 1

-- 10 is RPC:Completed event. 1 is TextData column. 
EXEC sp_trace_setevent @TraceID, 10, 1, @on 
-- 13 is SQL:BatchStarting, 11 is LoginName
EXEC sp_trace_setevent @TraceID, 13, 11, @on 
-- 13 is SQL:BatchStarting, 14 is StartTime
EXEC sp_trace_setevent @TraceID, 13, 14, @on 
-- 12 is SQL:BatchCompleted, 15 is EndTime
EXEC sp_trace_setevent @TraceID, 12, 15, @on 
-- 13 is SQL:BatchStarting, 1 is TextData
EXEC sp_trace_setevent @TraceID, 13, 1, @on 

-- Set any filter. Not provided in this example
--EXEC sp_trace_setfilter 1, 10, 0, 6, N'%Profiler%'

-- Start Trace (status 1 = start)
EXEC @RC = sp_trace_setstatus @TraceID, 1
GO

Ahora que se ha creado el seguimiento y se ha iniciado, ejecute el código siguiente para rellenarlo con actividad.

SELECT * FROM master.sys.databases
GO
SELECT * FROM ::fn_trace_getinfo(default)
GO

Se puede detener el seguimiento y reiniciar en cualquier momento. En este ejemplo, ejecute el código siguiente para detener el seguimiento, cerrarlo y eliminar su definición.

DECLARE @TraceID int
-- Populate a variable with the trace_id of the current trace
SELECT  @TraceID = TraceID FROM ::fn_trace_getinfo(default) WHERE VALUE = N'C:\SampleTrace.trc'

-- First stop the trace. 
EXEC sp_trace_setstatus @TraceID, 0

-- Close and then delete its definition from SQL Server. 
EXEC sp_trace_setstatus @TraceID, 2

Para examinar el archivo de seguimiento, abra el archivo SampleTrace.trc mediante SQL Server Profiler.