locked
Ejecución automatica de traza -trace RRS feed

  • Pregunta

  • Espero puedan ayudarme, en un Sql Server 2000, he creado una plantilla de traza (trace template), ahora bien lo que deseo es que esta plantilla se ejecute mientras este activo el servicio del SQL, como puedo hacer para que cada ves que el SQl Server inicie, la traza también se ejecute automáticamente.

    Gracias por la ayuda
    lunes, 14 de septiembre de 2009 20:45

Respuestas

  • Hola.

    Crea un procedimiento almacenado (en master) que cree y arranque la traza cuya plantilla has preparado y configúralo para que se ejecute como procedimiento almacenado de arranque:
     
    USE master;
    GO
    EXEC sp_configure 'show advanced option', '1';
    RECONFIGURE
    EXEC sp_configure 'scan for startup procs', '1';
    RECONFIGURE
    
    GO
    
    exec sp_procoption N'p_Arrancar_Traza', 'startup', 'on'
    GO
    Ahora, para verificar que la traza esté ejecutándose mientras el servicio esté activo deberás programar un job que lo chequee cada cierto tiempo. Para ello, mira este link sobre cómo supervisar trazas en sql server 2000: http://support.microsoft.com/kb/283786.

    Si no te sirve, nos dices.


    Alberto López Grande.
    lunes, 14 de septiembre de 2009 21:28
    Moderador

Todas las respuestas

  • Hola

    Respondiendo a tu pregunta puedes usar la opcion avanzada de SQL sp_configure para habilitar default trace enabled 
    luego lees
    SELECT * 
    FROM fn_trace_gettable
    ('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\log.trc', default)


    Por otro lado me gustaria saber..... solo por curiosidad porque quieres habilitar el trace permanentemente?
    lunes, 14 de septiembre de 2009 21:27
  • Hola.

    Crea un procedimiento almacenado (en master) que cree y arranque la traza cuya plantilla has preparado y configúralo para que se ejecute como procedimiento almacenado de arranque:
     
    USE master;
    GO
    EXEC sp_configure 'show advanced option', '1';
    RECONFIGURE
    EXEC sp_configure 'scan for startup procs', '1';
    RECONFIGURE
    
    GO
    
    exec sp_procoption N'p_Arrancar_Traza', 'startup', 'on'
    GO
    Ahora, para verificar que la traza esté ejecutándose mientras el servicio esté activo deberás programar un job que lo chequee cada cierto tiempo. Para ello, mira este link sobre cómo supervisar trazas en sql server 2000: http://support.microsoft.com/kb/283786.

    Si no te sirve, nos dices.


    Alberto López Grande.
    lunes, 14 de septiembre de 2009 21:28
    Moderador
  • Gracias Abraham y Alberto:

    Sobre tu consulta Abraham te comento:
    La plantilla que he creado es para temas de auditoria, y me esta filtrando solamente los updates, inserts, deletes, etc (excepto selects, sets y otros sucesos que no modifican datos) que se ejecutan contra una base de datos específica (la he tratado de hacer lo más liviana posible para que no afecte el rendimiento del sistema, es por eso que he creado mi propa plantilla), ahora lo que necesito es ejecutarla automáticamente y me parece que lo que me enviaste es para las opciones por defecto del >= SQL server 2005 .

    Estimados
    Aprovechando de sus conociemientos, como ya tengo un plantilla que esta OK, quisiera saber si hay alguna forma de generar la secuencia de comandos de esa plantilla y de esa manera utilizar la idea que propuso Alberto.
    De lo contrario haber si me dan una mano con lo siguiente, he revisado los comando para crear trazas y no encuentro la forma de enviar los resultados a una tabla, solo he encontrado la posibilidad de enviar los resultados a un archivo de texto.

    Gracias por la ayuda
    lunes, 14 de septiembre de 2009 23:20
  • Hola.

    Por una parte, la traza tendrá un impacto en producción. Mídelo con atención. Asegúrate de que la traza se graba en disco local y que ese disco no tiene ninguna base de datos, para que ese impacto sea el menor posible. Si lo guardas a tabla (que lo puedes hacer), con el posible peso que tendrá 

    En cuanto a lo que me comentas de opciones por defecto de SQL Server 2005, lo he repasado de nuevo y todo ello es sintaxis válida de SQL Server 2000 (ojo, me puedo equivocar). ¿Qué parte no te funciona como esperas?

    Luego, si tienes la sentencia de comandos, incluirlo en un procedimiento almacenado no es difícil, pero si lo prefieres, pásanoslo y te lo devolvemos.


    Alberto López Grande.
    martes, 15 de septiembre de 2009 7:38
    Moderador