我想使用触发器和审计表来审计对 SQLServer 中表的更改。最终用户通过应用程序连接到数据库。如果我使用SYSTEM_USER
获取最终用户的用户名,那么它会返回连接到数据库的应用程序的名称,而不是该应用程序的用户唯一登录名。
在这种情况下,捕获用户唯一应用程序登录名的标准方法是什么?
我想使用触发器和审计表来审计对 SQLServer 中表的更改。最终用户通过应用程序连接到数据库。如果我使用SYSTEM_USER
获取最终用户的用户名,那么它会返回连接到数据库的应用程序的名称,而不是该应用程序的用户唯一登录名。
在这种情况下,捕获用户唯一应用程序登录名的标准方法是什么?
尽管我在上面的评论中指出了一个潜在的重复问题,但随着 SQL Server 2016 中引入的新功能,Microsoft 引入了新功能,使(本质上是“会话”)信息从客户端应用程序到数据库的传递更加容易。
如前所述,
CONTEXT_INFO
这是 2016 年之前的解决方案——但它充满了困难。从 2016 年开始,
SESSION_CONTEXT
已经推出。与其自己尝试总结一下,还有一篇优秀的文章描述了这两种方法、它们的缺点并提供了有关它们用法的 SQL 示例。我确信那里有足够的信息来解决这个问题。