使用触发器的数据库审核日志 - 用户信息

时间:2011-06-29 15:40:39

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

看看Set Context_Info。我在过去审核和使用sql身份验证时成功使用了这个。我们的想法是在上下文中设置登录用户,然后在DB Trigger中从上下文中检索此信息并将其存储在DB中。如果您忘记在上下文中设置用户,则可以始终回退到suser_name(尽管对审计不是很有用,但在SSMS中直接进行更改时非常有用)。谷歌“审计跟踪集Context_Info”,你会发现一些例子。

喜欢这个one和此other one

答案 1 :(得分:0)

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

 var userName = Thread.CurrentPrincipal.Identity.Name;