enero 29, 2011

Auditoria de instrucciones DDL

Con DDL Triggers apartir de SQL Server 2005 podemos auditar todos las operaciones de DDL a la BD

USE pruebas


--La tabla de auditoria
Create Table DDL_Auditoria(
Id int Not Null identity,
FechaEvento datetime not null,
TipoEvento SYSNAME not null,
UsuarioEvento SYSNAME not null,
NombreObjeto SYSNAME not null,
NombreObjetoObjetivo SYSNAME not null
)

--disparador
Create TRIGGER DDL_AuditoriaDML ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS
As

Declare @EV as XML
SET @EV = EVENTDATA()
INSERT INTO DDL_Auditoria
VALUES(
CAST(@EV.query('data(//PostTime)') as varchar(23)),
CAST(@EV.query('data(//EventType)') as Sysname),
CAST(@EV.query('data(//LoginName)') as Sysname),
CAST(@EV.query('data(//ObjectName)') as Sysname),
CAST(@EV.query('data(//TargetObjectName)') as Sysname)
)
go

--Probamos el disparador con 2 operaciones DDL y consultamos las entradas de auditoria en nuestra tabla
Create Table TablaNueva (Cve int)
go
Alter Table TablaNueva ADD Col2 int
go
Select * FROM DDL_Auditoria
go

No hay comentarios.: