Pergunta

O ID de usuário em sua seqüência de conexão não é uma variável e é diferente do ID de usuário (pode ser GUID por exemplo) do seu programa. Como você auditar exclusões de log se da sua cadeia de conexão ID de usuário é estática?

O melhor lugar para fazer logon insert / update / delete é através de gatilhos. Mas com cadeia de conexão estática, é difícil para registrar que apagar alguma coisa. Qual é a alternativa?

Foi útil?

Solução

Com o SQL Server, você pode usar CONTEXT_INFO para passar informações para o gatilho.

Eu uso isso no código (chamado por aplicações web), onde eu tenho que usar gatilhos (por exemplo, caminhos escrever várias na mesa). Este é o lugar onde não pode colocar a minha lógica para os procedimentos armazenados.

Outras dicas

Nós temos uma situação similar. Nossa aplicação web funciona sempre como o mesmo usuário do banco de dados, mas com os usuários lógicas diferentes que fora faixas de aplicativos e controles.

Nós geralmente passar o ID do usuário lógico como um parâmetro para cada procedimento armazenado. Para acompanhar as exclusões, nós geralmente não excluir a linha, basta marcar o status como excluído, defina o LastChgID e LastChgDate campos em conformidade. Para tabelas importantes, onde mantemos um log de auditoria (uma cópia de cada mudança de estado), usamos o método acima e um gatilho copia a linha a uma tabela de auditoria, o LastChgID já está definido corretamente e o gatilho não precisa se preocupar sobre como obter o ID.

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