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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top