Você está na página 1de 2

Como criar uma trigger de Auditoria

para logar a manipulao de objetos


no SQL Server
18 de julho de 2015 body_of_rays

Ol pessoal,
Bom dia.

Introduo
Hoje venho trazer pra vocs um recurso muito til na vida dos DBAs SQL
Server, tanto pra auditoria de alterao/criao/excluso de objetos
quanto para um versionamento de SPs, Functions, etc, que a
utilizao de triggers para logar todas as alteraes a nvel de DDL em
objetos, inclusive sendo possvel gravar a query utilizada para tal. Isso
especialmente til no caso de objetos de programao, como Stored
Procedures e Functions, onde pode-se visualizar cada alterao realizada
nesses objetos.
Como um ponto adicional, adicionei uma mensagem de alerta para
quando algum criar um objeto em um database de sistema (model,
master e msdb). Esse alerta pode ser incrementado para enviar um email para a equipe de banco de dados alm de notificar visualmente o
usurio que criou o objeto, entre outros.
Caso voc queira saber tambm sobre Auditoria e controle de logins,
acesse o post Como implementar auditoria e controle de logins no SQL
Server

Implementao para um database especfico


Visualizar cdigo-fonte
Para que todos os usurios tenham acesso para gravar nessa tabela, ser
necessrio executar os comandos abaixo:
1
2 USE [Auditoria]
3 GO
4 GRANT CONNECT TO [guest]
GRANT INSERT ON dbo.Alteracao_Objetos TO PUBLIC

Implementao para todos os databases


A soluo apresentada acima, deve ser aplicada em cada database do
seu servidor em que voc deseja logar as operaes de DDL. No trecho
de cdigo abaixo, vou demonstrar como aplicar essa trigger em todos os
databases do servidor (Server trigger).

Visualizar cdigo-fonte
Assim como no database Trigger, para que todos os usurios tenham
acesso para gravar nessa tabela, ser necessrio executar os comandos
abaixo:
1
2 USE [Auditoria]
3 GO
4 GRANT CONNECT TO [guest]
GRANT INSERT ON dbo.Alteracao_Objetos TO PUBLIC

Resultados

Tabela de auditoria criada

Mensagem de alerta quando criam objetos em databases de


sistema