Profiler

04/01/2005 - 02:41 por Natacha | Informe spam
Hola a todos

Les pido el favor me indiquen como podria hacer lo siguiente.

He creado un trace que rastrea todas las operaciones que hace un usuario sql
server a traves del Query Analyzer.

Hasta ahí bien, pero necesito dejarlo corriendo como "demonio", de manera
que no necesite estar logueada en el servidor para que el trace se ejecute.

No se si se pueda dejar ejecutando como proceso batch.

Mil gracias.
 

Leer las respuestas

#1 qwalgrande
04/01/2005 - 09:31 | Informe spam
Hola.

Puedes crear arrancar y parar cualquier traza mediante scripts. Hacerlo
desde cero es algo lioso, pero si ya tienes definido en profiler unos eventos
y unos filtros, lo más fácil es crear un script de la traza en curso con
profiler. La opción está en File+Script Trace + For SQL Server 2000 (si usas
SQL Server 7, eliges ésta).

Estudia el script que te genera, que de forma simplificada consiste en crear
la traza, añadir los eventos a capturar y los filtros y por último arrancar
la traza con el sp sp_trace_setstatus. Antes de crear el script con todo
esto, te recomiendo que grabes el resultado a texto.

Te copio un script realizado por esta vía, pero no uses este, créate el tuyo
con tu traza ya definida.

qwalgrande

/****************************************************/
/* Created by: SQL Profiler */
/* Date: 04/01/2005 09:26:25 AM */
/****************************************************/


declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5
exec @rc = sp_trace_create @TraceID output, 0, N'C:\ResultTraza.trc',
@maxfilesize, NULL
if (@rc != 0) goto error


declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 6, @on
exec sp_trace_setevent @TraceID, 10, 9, @on
exec sp_trace_setevent @TraceID, 10, 10, @on
exec sp_trace_setevent @TraceID, 10, 11, @on
exec sp_trace_setevent @TraceID, 10, 12, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 10, 14, @on
exec sp_trace_setevent @TraceID, 10, 16, @on
exec sp_trace_setevent @TraceID, 10, 17, @on
exec sp_trace_setevent @TraceID, 10, 18, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 6, @on
exec sp_trace_setevent @TraceID, 12, 9, @on
exec sp_trace_setevent @TraceID, 12, 10, @on
exec sp_trace_setevent @TraceID, 12, 11, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 13, @on
exec sp_trace_setevent @TraceID, 12, 14, @on
exec sp_trace_setevent @TraceID, 12, 16, @on
exec sp_trace_setevent @TraceID, 12, 17, @on
exec sp_trace_setevent @TraceID, 12, 18, @on


declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
exec sp_trace_setfilter @TraceID, 10, 1, 6, N'SQL Query%'


exec sp_trace_setstatus @TraceID, 1

select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc

finish:
go


"Natacha" wrote:

Hola a todos

Les pido el favor me indiquen como podria hacer lo siguiente.

He creado un trace que rastrea todas las operaciones que hace un usuario sql
server a traves del Query Analyzer.

Hasta ahí bien, pero necesito dejarlo corriendo como "demonio", de manera
que no necesite estar logueada en el servidor para que el trace se ejecute.

No se si se pueda dejar ejecutando como proceso batch.

Mil gracias.


Preguntas similares