Job para una TRAZA

02/01/2006 - 18:51 por Wilson R. Rico Camargo | Informe spam
Tengo las sentencias SQL para crear una traza y lanzarla sin necesidad de
tener la herramienta "Profiler" abierta pero como funciona el ciclo y cada
cuanto ejecutara este evento. O es que este procedimiento queda ejecutandose
solo una vez se ejecuta y si es asi como lo detengo.

Adicionalmente no encuentro como enviarlo a una tabla.


Cordialmente,


Wilson R. Rico Camargo
BBVA Seguros
Bogotá - Colombia
wilson.rico@bbvaseguros.com.co
(Oficina (571) 2191100 Ext. 1140
Móvil 300-2076572: Mensajes instantáneos
Visite www.bbvaseguros.com.co

Preguntas similare

Leer las respuestas

#6 Wilson R. Rico Camargo
03/01/2006 - 18:28 | Informe spam
Por otra parte desde el profiler puedes enviar a una tabla la informacion,
como lo puedo hacer desde el procedimiento, porque veo que tu lo haces desde
VBScript y la idea seria aprovechar la misma opcion que da SQL Server.

Cordialmente,


Wilson R. Rico Camargo
BBVA Seguros
Bogotá - Colombia

(Oficina (571) 2191100 Ext. 1140
Móvil 300-2076572: Mensajes instantáneos
Visite www.bbvaseguros.com.co


"Guillermo Roldan" escribió en
el mensaje news:
Hola Wilson,

Yo tengo preparados varios procedimientos almacenados para la ejecución de
trazas (un procedimiento por traza). Dichos procedimientos, los ejecuto
desde
el Agente de SQL Server mediante un Job, teniendo en cuenta que siempre
los
arranco en el mismo orden y en dos ocasiones:
- Todos los días a las 7:00
- Al arrancar SQL Server

Mis procedimientos, generan ficheros de traza, que al final de cada día
son
transformados a tablas utilizando ::fn_trace_gettable() mediante un
VBScript
lanzado desde SQL Server Agent, y a continuación junto todas las trazas en
una varias tablas históricas, que sirven de tabla de hechos para varios
cubos
de Analysis Services para atacar desde Microsoft Excel. Se me olvido
decirte
que paro todas las trazas a las 19:00 horas, pues mi preocupación es el
online, pues la ventana Batch me resulta más que suficiente.

Todo esto cuando está funcionando es comodísimos. Todas las mañanas, abro
un
par de hojas de Excel, donde en cada pestaña tengo una vista diferente de
los
datos, y rápidamente encuentro intentos de conexión de sa, intentos
fallidos
de inicios de sesión, consumos exagerados de CPU por algún usuario en
alguna
BBDD en algún momento del día, previsiones de crecimiento de consumo por
base
de datos, etc.

Saludos,
Guillermo

PD: Te anexo el código de uno de los stored procedures, por si te resulta
útil.

CREATE PROCEDURE trazaAccesos AS

declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @fichero nvarchar(250)

set @maxfilesize = 50

set @fichero = 'E:\sqlserver\MSSQL\Trazas\accesos_' +
CAST(YEAR(GETDATE()) AS VARCHAR) +
RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR), 2) +
RIGHT('0' + CAST(DAY(GETDATE()) AS VARCHAR), 2) + '_' +
RIGHT('0' + DATENAME(hh, GETDATE()), 2) +
RIGHT('0' + DATENAME(mi, GETDATE()), 2) +
RIGHT('0' + DATENAME(ss, GETDATE()), 2)


***************************************************************************************
***
exista la traza, ***
***
***************************************************************************************
exec sp_trace_setstatus 1, 0 -- *** Detener
exec sp_trace_setstatus 1, 2 -- *** Eliminar Definición de la Traza


exec @rc = sp_trace_create @TraceID output, 2, @fichero, @maxfilesize,
NULL
if (@rc != 0) goto error

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

exec sp_trace_setevent @TraceID, 20, 3, @on
exec sp_trace_setevent @TraceID, 20, 6, @on
exec sp_trace_setevent @TraceID, 20, 8, @on
exec sp_trace_setevent @TraceID, 20, 10, @on
exec sp_trace_setevent @TraceID, 20, 11, @on
exec sp_trace_setevent @TraceID, 20, 12, @on
exec sp_trace_setevent @TraceID, 20, 13, @on
exec sp_trace_setevent @TraceID, 20, 14, @on
exec sp_trace_setevent @TraceID, 20, 15, @on
exec sp_trace_setevent @TraceID, 20, 16, @on
exec sp_trace_setevent @TraceID, 20, 17, @on
exec sp_trace_setevent @TraceID, 20, 18, @on
exec sp_trace_setevent @TraceID, 20, 26, @on


declare @intfilter int
declare @bigintfilter bigint

trazas
exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
las trazas
así como intentos fallidos de conexión !!


exec sp_trace_setstatus @TraceID, 1


select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc

finish:
GO


"Wilson R. Rico Camargo" wrote:

Tengo las sentencias SQL para crear una traza y lanzarla sin necesidad de
tener la herramienta "Profiler" abierta pero como funciona el ciclo y
cada
cuanto ejecutara este evento. O es que este procedimiento queda
ejecutandose
solo una vez se ejecuta y si es asi como lo detengo.

Adicionalmente no encuentro como enviarlo a una tabla.


Cordialmente,


Wilson R. Rico Camargo
BBVA Seguros
Bogotá - Colombia

(Oficina (571) 2191100 Ext. 1140
Móvil 300-2076572: Mensajes instantáneos
Visite www.bbvaseguros.com.co



Respuesta Responder a este mensaje
#7 Wilson R. Rico Camargo
03/01/2006 - 18:41 | Informe spam
Ya lo encontre estoy medio lelo, gracias me ayudaste mucho


"Guillermo Roldan" escribió en
el mensaje news:
Hola Wilson,

Yo tengo preparados varios procedimientos almacenados para la ejecución de
trazas (un procedimiento por traza). Dichos procedimientos, los ejecuto
desde
el Agente de SQL Server mediante un Job, teniendo en cuenta que siempre
los
arranco en el mismo orden y en dos ocasiones:
- Todos los días a las 7:00
- Al arrancar SQL Server

Mis procedimientos, generan ficheros de traza, que al final de cada día
son
transformados a tablas utilizando ::fn_trace_gettable() mediante un
VBScript
lanzado desde SQL Server Agent, y a continuación junto todas las trazas en
una varias tablas históricas, que sirven de tabla de hechos para varios
cubos
de Analysis Services para atacar desde Microsoft Excel. Se me olvido
decirte
que paro todas las trazas a las 19:00 horas, pues mi preocupación es el
online, pues la ventana Batch me resulta más que suficiente.

Todo esto cuando está funcionando es comodísimos. Todas las mañanas, abro
un
par de hojas de Excel, donde en cada pestaña tengo una vista diferente de
los
datos, y rápidamente encuentro intentos de conexión de sa, intentos
fallidos
de inicios de sesión, consumos exagerados de CPU por algún usuario en
alguna
BBDD en algún momento del día, previsiones de crecimiento de consumo por
base
de datos, etc.

Saludos,
Guillermo

PD: Te anexo el código de uno de los stored procedures, por si te resulta
útil.

CREATE PROCEDURE trazaAccesos AS

declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @fichero nvarchar(250)

set @maxfilesize = 50

set @fichero = 'E:\sqlserver\MSSQL\Trazas\accesos_' +
CAST(YEAR(GETDATE()) AS VARCHAR) +
RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR), 2) +
RIGHT('0' + CAST(DAY(GETDATE()) AS VARCHAR), 2) + '_' +
RIGHT('0' + DATENAME(hh, GETDATE()), 2) +
RIGHT('0' + DATENAME(mi, GETDATE()), 2) +
RIGHT('0' + DATENAME(ss, GETDATE()), 2)


***************************************************************************************
***
exista la traza, ***
***
***************************************************************************************
exec sp_trace_setstatus 1, 0 -- *** Detener
exec sp_trace_setstatus 1, 2 -- *** Eliminar Definición de la Traza


exec @rc = sp_trace_create @TraceID output, 2, @fichero, @maxfilesize,
NULL
if (@rc != 0) goto error

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

exec sp_trace_setevent @TraceID, 20, 3, @on
exec sp_trace_setevent @TraceID, 20, 6, @on
exec sp_trace_setevent @TraceID, 20, 8, @on
exec sp_trace_setevent @TraceID, 20, 10, @on
exec sp_trace_setevent @TraceID, 20, 11, @on
exec sp_trace_setevent @TraceID, 20, 12, @on
exec sp_trace_setevent @TraceID, 20, 13, @on
exec sp_trace_setevent @TraceID, 20, 14, @on
exec sp_trace_setevent @TraceID, 20, 15, @on
exec sp_trace_setevent @TraceID, 20, 16, @on
exec sp_trace_setevent @TraceID, 20, 17, @on
exec sp_trace_setevent @TraceID, 20, 18, @on
exec sp_trace_setevent @TraceID, 20, 26, @on


declare @intfilter int
declare @bigintfilter bigint

trazas
exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
las trazas
así como intentos fallidos de conexión !!


exec sp_trace_setstatus @TraceID, 1


select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc

finish:
GO


"Wilson R. Rico Camargo" wrote:

Tengo las sentencias SQL para crear una traza y lanzarla sin necesidad de
tener la herramienta "Profiler" abierta pero como funciona el ciclo y
cada
cuanto ejecutara este evento. O es que este procedimiento queda
ejecutandose
solo una vez se ejecuta y si es asi como lo detengo.

Adicionalmente no encuentro como enviarlo a una tabla.


Cordialmente,


Wilson R. Rico Camargo
BBVA Seguros
Bogotá - Colombia

(Oficina (571) 2191100 Ext. 1140
Móvil 300-2076572: Mensajes instantáneos
Visite www.bbvaseguros.com.co



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida