【问题标题】:Database Audit Log using Triggers - User information使用触发器的数据库审计日志 - 用户信息
【发布时间】:2011-06-30 00:13:11
【问题描述】:

我正在考虑使用AFTER INSERT, DELETE, UPDATE 触发器来捕获对我的一个数据库的更改。我想要的一件事是捕获进行更改的用户的名称。

由于我使用专用 SQL 帐户连接到数据库(来自 ASP.NET MVC),我不相信 SUSER_SNAME() 会为我提供准确的信息。

我是否可以将 ASP.NET MVC 端的用户名输入到触发器?

为针对 Active Directory 的 Windows 身份验证配置了 ASP.NET 端。

【问题讨论】:

    标签: asp.net-mvc sql-server-2008 triggers auditing


    【解决方案1】:

    看看Set Context_Info。我过去在审计和使用 sql 身份验证时已经成功使用过这个。这个想法是您在上下文中设置登录用户,然后在数据库触发器中从上下文中检索此信息并将其存储在数据库中。如果您忘记在上下文中设置用户,您总是可以回退到 suser_name(虽然这对审计不是很有用,但在直接在 SSMS 中进行更改时很有用)。谷歌“Audit Trail Set Context_Info”,你会找到一些例子。

    喜欢这个one 和这个other one

    【讨论】:

    • 哇哦。第二个示例实际上将所有内容结合在一起,因为我想知道如何使用 EF 来实现。谢谢。
    【解决方案2】:

    您可以使用 Thread.CurrentPrincipal 获取 Windows 帐户并将其作为参数传递给您的查询,因此可供触发器使用。

     var userName = Thread.CurrentPrincipal.Identity.Name;
    

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 2010-09-29
      • 2011-02-09
      • 2011-01-09
      • 2011-01-02
      • 2021-10-04
      • 1970-01-01
      • 2015-11-26
      • 2020-06-30
      相关资源
      最近更新 更多