Gostaria de auditar alterações em uma tabela no SQLServer usando um gatilho e uma tabela de auditoria para fazer isso. Os usuários finais se conectam ao banco de dados por meio de um aplicativo. Se eu usar SYSTEM_USER
para obter o nome de usuário do usuário final, ele retornará o nome do aplicativo que está se conectando ao banco de dados e não o nome de login exclusivo do usuário para esse aplicativo.
Qual seria uma abordagem padrão para capturar o nome de login do aplicativo exclusivo do usuário neste cenário?
Embora eu tenha notado uma possível pergunta duplicada em meus comentários acima, a Microsoft introduziu novos recursos para facilitar a passagem de informações (essencialmente "sessão") de um aplicativo cliente para o banco de dados, com a introdução de novos recursos no SQL Server 2016.
Como observado anteriormente,
CONTEXT_INFO
foi a solução anterior a 2016 - mas está repleta de dificuldades.A partir de 2016,
SESSION_CONTEXT
foi introduzido.Em vez de tentar resumir isso sozinho, há um excelente artigo descrevendo os dois métodos , suas deficiências e fornecendo exemplos de SQL sobre seu uso. Tenho certeza de que há amplas informações para trabalhar em uma solução para esse problema.