我们有一个(asp.net)应用程序,它使用专门为此应用程序设置的登录凭据连接到SQL Server 2008 R2数据库。
我们的应用程序通过存储过程访问/修改/删除记录,我们将执行操作的用户的用户名作为参数传递给该记录。
我们需要能够保留某些表上所有更新和删除的审核日志。 该解决方案还需要尽可能少,不需要任何开发人员干预。
我能找到的最简单方法是在表(A)上设置一个触发器,将“旧”数据复制到历史表中(A_History) 问题是我们需要能够告诉谁执行了操作,对于更新这很容易我们只看新插入记录的用户名。但是对于删除,我们无权访问发送到存储过程的username参数。
有没有办法在不使用CONTEXT_INFO()之类的情况下实现这一点,因为这需要添加到每个存储过程和每个调用中,这必然会被遗忘。
答案 0 :(得分:4)
SQL Change Tracking可能会对您有所帮助。
现在,您应该做其他一些事情:
实现所有这些,SQL将跟踪这些记录的每个版本......谁创建了它们......谁修改了它们......谁将它们标记为已删除。