Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Auditoria de Base de datos con Triggers

Estas en el tema de Auditoria de Base de datos con Triggers en el foro de SQL Server en Foros del Web. Buenas gente, estoy creando auditorias para mi base de datos utilizando triggers. Hasta ahora estuve haciendo un trigger para cada accion en cada tabla, es ...
  #1 (permalink)  
Antiguo 19/11/2007, 18:31
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años, 8 meses
Puntos: 6
Auditoria de Base de datos con Triggers

Buenas gente, estoy creando auditorias para mi base de datos utilizando triggers.

Hasta ahora estuve haciendo un trigger para cada accion en cada tabla, es decir uno para insert, otro para update y otro para delete.

Pero creo que no es lo mas eficiente, y quiero hacer un solo trigger para las 3 acciones.

El problema es que en mi tabla de auditoria, tengo un campo "Accion Realizada" y necesito saber si existe alguna funcion que me devuelva la accion realizada automaticamente y asi pueda guardarla en ese campo usando un trigger para las 3 opciones...

Seria algo asi:
Código:
CREATE TRIGGER ....
ON Audit_xx
FOR INSERT, UPDATE, DELETE
AS

INSERT INTO ....
SELECT xx, yy, (aca iria la funcion que necesito) FROM {inserted|deleted}
Gracias...
  #2 (permalink)  
Antiguo 08/04/2008, 08:25
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años, 8 meses
Puntos: 6
Re: Auditoria de Base de datos con Triggers

.... Up! ......
  #3 (permalink)  
Antiguo 08/04/2008, 12:34
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Re: Auditoria de Base de datos con Triggers

Este codigo lo escribio Carlos Sacristan, espero y sirva:

***************
CREATE TABLE [dbo].[Bitacora] (
[BitacoraID] [int] IDENTITY (1, 1) NOT NULL ,
[EventType] [char] (14) NOT NULL ,
[Status] [int] NOT NULL ,
[EventInfo] [varchar] (1000) NOT NULL ,
[Usuario] [varchar] (20) NOT NULL ,
[Fecha] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Bitacora] WITH NOCHECK ADD
CONSTRAINT [DF_Bitacora_Usuario] DEFAULT (suser_sname()) FOR [Usuario],
CONSTRAINT [DF_Bitacora_Fecha] DEFAULT (getdate()) FOR [Fecha]
******************
Y, por otro lado, el trigger en la tabla lo refiniría de la siguiente
manera:
******************
/* Trigger de Monitoreo */
CREATE TRIGGER trig_tablabitacora
ON TABLA -- Nombre de tu tabla--
FOR DELETE, INSERT, UPDATE
AS
BEGIN
DECLARE @NUMERO INT
INSERT INTO Bitacora (EventType,Status,EventInfo)
exec sp_executesql N'DBCC INPUTBUFFER( @i )', N'@i int',
@i=@@spid
END
******************
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:50.