如何在Sql Server中实现审核日志

时间:2011-03-03 02:30:08

标签: asp.net sql-server-2008 audit-trail

我们有一个(asp.net)应用程序,它使用专门为此应用程序设置的登录凭据连接到SQL Server 2008 R2数据库。

我们的应用程序通过存储过程访问/修改/删除记录,我们将执行操作的用户的用户名作为参数传递给该记录。

我们需要能够保留某些表上所有更新和删除的审核日志。 该解决方案还需要尽可能少,不需要任何开发人员干预。

我能找到的最简单方法是在表(A)上设置一个触发器,将“旧”数据复制到历史表中(A_History) 问题是我们需要能够告诉谁执行了操作,对于更新这很容易我们只看新插入记录的用户名。但是对于删除,我们无权访问发送到存储过程的username参数。

有没有办法在不使用CONTEXT_INFO()之类的情况下实现这一点,因为这需要添加到每个存储过程和每个调用中,这必然会被遗忘。

1 个答案:

答案 0 :(得分:4)

SQL Change Tracking可能会对您有所帮助。

现在,您应该做其他一些事情:

  1. 避免实际删除您的 记录。
  2. 添加有效/已删除 柱。
  3. 确保你的桌子有 ModifiedByUserID和CreatedByUserID 列。
  4. 更新时,将其标记为已删除 或者,更新 ModifiedByUserID列与 来电者的用户名。
  5. 实现所有这些,SQL将跟踪这些记录的每个版本......谁创建了它们......谁修改了它们......谁将它们标记为已删除。