Pregunta

El ID de usuario en la cadena de conexión no es una variable y es diferente del identificador de usuario (puede ser por ejemplo GUID) de su programa. ¿Cómo se elimina del registro de auditoría si la cadena de conexión de la identificación del usuario es estática?

El mejor lugar para iniciar la sesión insertar / actualizar / borrar es a través de disparadores. Pero con cadena de conexión estática, es difícil entrar que borrar algo. ¿Cuál es la alternativa?

¿Fue útil?

Solución

Con SQL Server, puede utilizar CONTEXT_INFO para pasar información al gatillo.

Yo uso esta en el código (llamado por aplicaciones web) donde tengo que utilizar disparadores (por ejemplo, múltiples caminos de escritura en la tabla). Aquí es donde no se puede poner mi lógica en los procedimientos almacenados.

Otros consejos

Tenemos una situación similar. Nuestra aplicación web siempre se ejecuta como el mismo usuario de base de datos, pero con diferentes usuarios lógicas pistas y controles de aplicación que fuera.

Pasamos generalmente en el ID de usuario lógico como un parámetro en cada procedimiento almacenado. Para realizar un seguimiento de las eliminaciones, por lo general no elimina la fila, solo marca el estado como eliminado, establecer los campos LastChgID y LastChgDate en consecuencia. Para las tablas importantes, donde mantenemos un registro de auditoría (una copia de todos los estados de cambio), se utiliza el método anterior y un disparador copia la fila a una tabla de auditoría, el LastChgID ya está configurado correctamente y el gatillo no tiene por que preocuparse acerca de cómo obtener el ID.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top