none
Trigger de UPDATE para auditoria no SQL Server 2005. RRS feed

  • Pergunta

  • Olá a todos!!!

    Eu tenho um trigger de auditoria para eventos ddls, que loga em uma tabela os seguintes dados: comando, data, host e login. Segue o código abaixo. Mas, como eu posso fazer a mesma auditoria para dml??? Por exemplo, em um evento de UPDATE, logar os mesmos dados deste trigger de ddl, quando ocorrer o UPDATE, logar em uma tabela de log, o camando, a data, o host e o login??? Verifiquei algumas formas, inclusive aqui no msdn mas, encontrei pra logar os dados que estavam sendo alterados somente. Por gentileza, podem me dar uma ajuda???

    -- create DDL trigger
    CREATE TRIGGER [ddl_log]
    ON DATABASE
    FOR DDL_DATABASE_LEVEL_EVENTS
    AS
    DECLARE @data xml
    DECLARE @cmd nvarchar(1000)
    DECLARE @posttime nvarchar(24)
    DECLARE @spid nvarchar(6)
    DECLARE @loginname nvarchar(100)
    DECLARE @hostname nvarchar(100)

    --SET @data = eventdata()
    SET @cmd = @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',  'nvarchar(1000)')
    SET @posttime = @data.value('(/EVENT_INSTANCE/PostTime)[1]', 'nvarchar(24)')
    SET @spid = @data.value('(/EVENT_INSTANCE/SPID)[1]','nvarchar(6)')
    SET @loginname = @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)')
    SET @hostname = HOST_NAME()

    INSERT INTO dbo.audit_log(Command,PostTime,HostName,LoginName)
    VALUES(@cmd, @posttime, @hostname, @loginname)

    SELECT @data


    []´s

    PH.

    sexta-feira, 17 de abril de 2009 17:11

Respostas

  • Olá,

    Existem várias formas de realizar auditorias, uma delas é através de triggers dml:

    no meu blog http://demetriosqlserver.spaces.live.com/blog/cns!1D50CF1AC3A02CDE!164.entry você pode encontrar uma procedure que gera triggers de auditoria e tb a tabela espelho para a mesma.

    Procure também no fórum pois esta é uma pergunta bem recorrente.

    Abraços

    Demétrio Silva
    • Sugerido como Resposta Demétrio Silva sexta-feira, 17 de abril de 2009 20:14
    • Marcado como Resposta phscuritiba quarta-feira, 22 de abril de 2009 15:21
    sexta-feira, 17 de abril de 2009 17:22
  • Olá!

    Neste link também tem um bom exemplo:

    http://fernandorsql.spaces.live.com/blog/cns!2DB370A53DE517E2!230.entry?sa=618300061


    Abraços,

    Carol
    • Sugerido como Resposta Demétrio Silva sexta-feira, 17 de abril de 2009 20:13
    • Marcado como Resposta phscuritiba quarta-feira, 22 de abril de 2009 15:21
    sexta-feira, 17 de abril de 2009 18:48

Todas as Respostas

  • Olá,

    Existem várias formas de realizar auditorias, uma delas é através de triggers dml:

    no meu blog http://demetriosqlserver.spaces.live.com/blog/cns!1D50CF1AC3A02CDE!164.entry você pode encontrar uma procedure que gera triggers de auditoria e tb a tabela espelho para a mesma.

    Procure também no fórum pois esta é uma pergunta bem recorrente.

    Abraços

    Demétrio Silva
    • Sugerido como Resposta Demétrio Silva sexta-feira, 17 de abril de 2009 20:14
    • Marcado como Resposta phscuritiba quarta-feira, 22 de abril de 2009 15:21
    sexta-feira, 17 de abril de 2009 17:22
  • Olá!

    Neste link também tem um bom exemplo:

    http://fernandorsql.spaces.live.com/blog/cns!2DB370A53DE517E2!230.entry?sa=618300061


    Abraços,

    Carol
    • Sugerido como Resposta Demétrio Silva sexta-feira, 17 de abril de 2009 20:13
    • Marcado como Resposta phscuritiba quarta-feira, 22 de abril de 2009 15:21
    sexta-feira, 17 de abril de 2009 18:48
  • Carol e Demetrio,

    muito obrigado pela ajuda, as duas informações foram de grande ajuda. Com base nos exemplos consegui montar o trigger aqui. Muito obrigado mesmo.

    []´s

    PH.
    sexta-feira, 17 de abril de 2009 18:57