Trigger sobre sysusers

04/11/2003 - 01:00 por Franci | Informe spam
hola grupo,

quiero realizar unas acciones cuando se inserta/modifica/borra un
usuario en la base de datos, pero ya he comprobado que no pueden realizarse
triggers sobre una tabla del sistema. Lo que quiero es coger el uid del
usuario y el nombre, por ejemplo al insertar, he introducirlo en otra tabla.

´¿cómo puedo hacer esto? ¿hay algo equivalente a los triggers que me
permita realizar operaciones sobre las tablas de sistema?

Gracias de antemano

Saludos
________
Franci
 

Leer las respuestas

#1 Javier Loria
04/11/2003 - 03:42 | Informe spam
Hola:
Como ya lo descubriste, no se pueden hacer triggers sobre tablas de
sistema.
a) Una alternativa seria hacer un Job que revise con cierta frecuencia
la tabla de sysusers e inserte/borre/actualize los usuarios en tu BD. Esta
es "facil" de construir, pero no es en "tiempo real", si alguien crea un
usuario no va a ser visto por la aplicacion hasta que se corra el proceso de
"sincronizacion". El problema mas serio sin embargo es que creas una
dependencia de tu aplicacion y las tablas de sistema de SQL 2000, y es
posible que la proxima version se cambien dichas tablas.
b) Crear un Procedimiento Almacenado que cree los usuarios en la Base
de Datos (usando sp_grantdbaccess) e ingresando en tu tabla los datos que
requieres. Esto exige que este sea el unico mecanismo de creacion de
usuarios.
Ninguna de las 2 arquitecturas es muy solida y es facil "descomponerla".
Si lo que estas haciendo es definir un esquema de seguridad para la
aplicacion, podrias revisar si te sirve una arquitectura basada en "Roles"
que estan traducidos en los BOL como "Funciones de Base de Datos" (Premio a
la peor traduccion).

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



Franci escribio:
hola grupo,

quiero realizar unas acciones cuando se inserta/modifica/borra un
usuario en la base de datos, pero ya he comprobado que no pueden
realizarse triggers sobre una tabla del sistema. Lo que quiero es
coger el uid del usuario y el nombre, por ejemplo al insertar, he
introducirlo en otra tabla.

´¿cómo puedo hacer esto? ¿hay algo equivalente a los triggers
que me permita realizar operaciones sobre las tablas de sistema?

Gracias de antemano

Saludos
________
Franci

Preguntas similares