Como criar uma trigger de Auditoria para logar a manipulação de objetos no SQL Server 18 de julho de 2015 body_of_rays
Olá pessoal,
Bom dia.
IntroduçãoHoje venho trazer pra vocês um recurso muito útil na vida dos DBA’s SQL
Server, tanto pra auditoria de alteração/criação/exclusão de objetos
quanto para um “versionamento” de SP’s, Functions, etc, que é a
utilização de triggers para logar todas as alterações a nível de DDL em
objetos, inclusive sendo possível gravar a query utilizada para tal. Isso é
especialmente útil no caso de objetos de programação, como Stored
Procedures e Functions, onde pode-se visualizar cada alteração realizada
nesses objetos.
Como um ponto adicional, adicionei uma mensagem de alerta para
quando alguém criar um objeto em um database de sistema (model,
master e msdb). Esse alerta pode ser incrementado para enviar um e-
mail para a equipe de banco de dados além de notificar visualmente o
usuário que criou o objeto, entre outros.
Caso você queira saber também sobre Auditoria e controle de logins,
acesse o post Como implementar auditoria e controle de logins no SQL
Server
Implementação para um database específicoVisualizar código-fonte
Para que todos os usuários tenham acesso para gravar nessa tabela, será
necessário executar os comandos abaixo:1234
USE [Auditoria]GOGRANT CONNECT TO [guest]GRANT INSERT ON dbo.Alteracao_Objetos TO PUBLIC
Implementação para todos os databasesA solução apresentada acima, deve ser aplicada em cada database do
seu servidor em que você deseja logar as operações de DDL. No trecho
de código abaixo, vou demonstrar como aplicar essa trigger em todos os
databases do servidor (Server trigger).
Visualizar código-fonte
Assim como no database Trigger, para que todos os usuários tenham
acesso para gravar nessa tabela, será necessário executar os comandos
abaixo:
1234
USE [Auditoria]GOGRANT CONNECT TO [guest]GRANT INSERT ON dbo.Alteracao_Objetos TO PUBLIC
ResultadosTabela de auditoria criada
Mensagem de alerta quando criam objetos em databases de
sistema