Cómo obtener el valor "start_lsn" en el código de solicitud
-
13-12-2019 - |
Pregunta
La base de datos rastrea todos los cambios a través del mecanismo " Cambiar captura de datos ".Necesito agregar información adicional sobre los usuarios que realizan estos cambios. Los siguientes usuarios no son usuarios de SQL Server.La autorización de seguridad se realiza a través de un mecanismo externo.
Quiero agregar una tabla auxiliar con columnas " start_lsn " y " userid " para asociar una transacción con el usuario autorizado. ¿Hay alguna forma de determinar el valor " start_lsn ", que corresponde a la transacción actual ejecutada en el código de la aplicación?
Solución
En la actualidad, he encontrado la siguiente solución:
1)
-
Crear una tabla más (por ejemplo, la useractividad "" ), que tiene el ID de y "" Columnas;
-
Utilice la columna "ID" como la clave principal;
-
Habilitar la opción de CDC para esta tabla.
2)
-
envolver todas las operaciones de modificación de datos con un alcance de transacción ;
-
Agregue un nuevo registro de datos a esta tabla con el ID de usuario actual "" durante una transacción particular:
-
comienza exclusivo transacción;
-
-
Realizar "Manipulación de datos";
-
Inserte información sobre "userid" en la tabla de la ".
Dado que la transacción es exclusiva y todas las operaciones se realizaron dentro de un solo ámbito de transacción, el valor Última_lsn " (" start_lsn ") es el mismo.
Después de eso, utilizando el operador de la unión, fusiona los datos de la tabla de la USOMACTIVIDAD " con la información de manipulación de datos.