Como obter o valor "start_lsn" no código do aplicativo
-
13-12-2019 - |
Pergunta
O banco de dados faixa todas as alterações através do mecanismo " captura de dados de alteração ".Eu preciso adicionar informações adicionais sobre os usuários que fazem essas alterações. Os seguintes usuários não são usuários do SQL Server.A autorização de segurança é realizada através de um mecanismo externo.
Eu quero adicionar uma tabela auxiliar com colunas " start_lsn " e " userid " para associar uma transação ao usuário autorizado. Existe alguma maneira de determinar o valor " start_lsn ", que corresponde à transação atual executada no código do aplicativo?
Solução
Actualmente, encontrei a seguinte solução:
1)
-
Crie mais uma tabela (por exemplo, a "UserActivity" ), que tem o
"ID" e "userid" Colunas; -
Use a coluna "ID" como a chave primária;
-
Ative a opção CDC para esta tabela.
2)
-
envolva todas as operações de modificação de dados com um escopo de transação ;
-
Adicione um novo registro de dados nesta tabela com a corrente "userid" durante uma determinada transação:
-
comece exclusivo transação;
-
-
execute "manipulação de dados";
-
inserir informações sobre "userid" na tabela "useratividade" .
Como a transação é exclusiva e todas as operações foram feitas dentro de um único escopo de transação, o valor "last_lsn" ( "start_lsn" ) é o mesmo.
Depois disso, usando o operador de junção, mesclar dados da tabela "useratividade" com informações de manipulação de dados.