Você está na página 1de 5

Auditando con DDL Triggers en SQL Server 2005

Mi, 01/09/2008 - 21:21 MarceC


En la medida que crece la necesidad de auditar la actividad en nuestros
servidores S!, revisamos qu "erramientas nativas traen las nuevas
versiones del motor#
$dicionalmente al %ro&iler '"erramienta cliente(, a las tra)as en *ac+,round 'del
lado del servidor(, a los -M! tri,,ers . a la auditor/a de lo,in-ids, a0arecen en
la versi1n 2002 de S! los --! tri,,ers, es decir tri,,ers que se dis0aran ante
eventos de -ata -e&inition !an,ua,e 'create, dro0, alter(#
E3isten --! tri,,ers que se 0ueden de&inir a nivel de servidor com0leto '0or la
naturale)a del o*4eto que auditan, e4: creaci1n/alter/dro0 de un lo,in( o con un
alcance de *ase de datos -0ara todas las 5-s# o 0ara al,una en 0articular-#
Estos tri,,ers 0odr/an re,istrar in&ormaci1n 6til como 0ista de auditor/a como la
cuenta 7indo8s de la session que lo reali)e, desde qu "ost, usuario de 5-,
&ec"a, *ase, etc, tanto en una ta*la que se "a.a creado 0ara tal &in , como
tam*in escri*ir el evento en el Error lo, de S! . en el $00lication !o, del
Event 9ie8er, que 0odr/a ser atra0ado 0or M:M, si esta o0ci1n est; m;s
acorde a c1mo tra*a4an en tu or,ani)aci1n#
$c; "a. una ta*lita con res0ecto a lo que "a*l;*amos de los eventos que
0ueden ca0turarse . su alcance, que se 0uede encontrar en los 5oo+s 2002:
%ara &acilitar la de&inici1n tam*in es 0osi*le de&inir eventos en &orma ,lo*al, es
decir 0or ,ru0os# %or e4em0lo si uno quiere re,istrar la actividad de --!
relacionada con una *ase de datos, no es necesario de&inir un tri,,er --! 0ara
las ta*las 0or un lado, 0ara las vistas 0or otro, otro tri,,er 0ara de&inici1n-alter-
dro0 de stored 0rocedures# Se de&ine un solo tri,,er 0ara toda la *ase de datos
'--!<-$=$5$SE<!E9E!<E9E>=S(:
!a si,uiente es la lista de los ?event ,rou0s@ donde muestra claramente qu
eventos ,ru0ales en,lo*an su*eventos:
9amos a"ora 0or unos e4em0los#
El 0rimero es de --! tri,,er con sco0e de todo el Servidor S!#
En el mismo se ,ra*a un mensa4e en el !o, de S! . en el $00lication !o, de
7indo8s, donde a0arece como Source: MSS!SEA9EA . E9E>=: 1B0C1#
CAE$=E =ADEEEA servertri,,er
:> $!! SEA9EA
F:A --!<!:ED><E9E>=S
$S
-EC!$AE Gdata HM!
-EC!$AE GMESS$EE varc"ar'222(
-EC!$AE Gcomando varc"ar'222(
-EC!$AE GIsuario >9$ACJ$A'100(
-EC!$AE GServer >9$ACJ$A'100(
SE= Gdata K E9E>=-$=$'(
SE= GIsuario K SLS=EM<ISEA
SE= GServer K GGservername
SE!EC= G comandoK E9E>=-$=$'(#value'M'/E9E>=<D>S=$>CE/Event=.0e(
N1OM,Mnvarc"ar'ma3(M( P
E9E>=-$=$'(#value'M'/E9E>=<D>S=$>CE/:*4ect>ame(N1OM,Mnvarc"ar'ma3(M(
SE!EC= GMESS$EE K M--! en SEA9EA: M P GServer P MQM P GIsuario P MQM P
Gcomando
EHEC master#d*o#30<lo,event 20001, GMESS$EE, in&ormational
E:
$"ora vamos 0or un e4em0lo a nivel *ase de datos# En este caso se ,ra*a un
re,istro en una ta*la creada 0ara tal &in . tam*in se escri*e en !o,s# Se utili)a
un evento ,lo*al 0ara ca0turar cualquier actividad de --l que ocurra en la
*ase#
ISE N*ase3O
E:
CAE$=E =ADEEEA Nddlen*ase3O
:> -$=$5$SE
F:A --!<-$=$5$SE<!E9E!<E9E>=S
$S
-EC!$AE Gdata HM!
-EC!$AE GMESS$EE varc"ar'222(
-EC!$AE G-5>$ME >9$ACJ$A'128(
-EC!$AE GIsuario >9$ACJ$A'100(
-EC!$AE Gcomando >9$ACJ$A'128(
SE= G-5>$ME K -5<>$ME'(
SE= Gdata K E9E>=-$=$'(
SE= GIsuario K SLS=EM<ISEA
SE= Gcomando K Gdata#value'M'/E9E>=<D>S=$>CE/=S!Command(N1OM,
Mnvarc"ar'2000(M(
D>SEA= --!<lo,
'Fec"a, !o,in, Isuario, Evento, Sentencia(
9$!IES
'EE=-$=E'(,
C:>9EA='nvarc"ar'100(, SLS=EM<ISEA(,
C:>9EA='nvarc"ar'100(, CIAAE>=<ISEA (,
Gdata#value'M'/E9E>=<D>S=$>CE/Event=.0e(N1OM, Mnvarc"ar'100(M(,
Gdata#value'M'/E9E>=<D>S=$>CE/=S!Command(N1OM, Mnvarc"ar'2000(M( (
SE!EC= GGMESS$EE K M--! en *ase de datos: M P G-5>$ME P MQM P
GIsuario P MQM P Gcomando
EHEC master#d*o#30<lo,event 20001, GGMESS$EE, in&ormational
E:

Você também pode gostar