审核SQL Server数据库中的记录更改

如果需要,仅使用基于Microsoft的技术(MS SQL Server,C#,EAB等)来跟踪数据库中记录的更改,您将使用哪种策略?触发器,DAL上的AOP,其他?以及如何显示收集的数据?是否有某种模式?有没有工具或框架可以帮助实现这种解决方案?
最佳答案
变更数据捕获的问题在于它对于实际审计而言不够灵活.您无法添加所需的列.另外,默认情况下,它每三天会转储一次记录(您可以更改此设置,但我认为您不能永远存储),因此,如果您需要保留数据,则必须将记录转储到真实的审计表中很长的时间,这通常是审核记录的需要(我们从不转储审核记录).

我更喜欢触发方式.编写触发器时必须小心,以确保如果更改了多个记录,触发器将捕获数据.对于每个审核的表,我们都有两个表,一个用于存储执行操作的用户或进程的日期时间和ID,另一个用于存储新旧数据.由于我们执行许多多重记录过程,因此这对我们至关重要.如果有人报告了一个不良记录,我们希望能够查看是否是进行更改的过程,如果是,那么其他哪些记录也可能受到了影响.

在创建审核过程时,请创建脚本以将一组审核数据还原为旧值.如果您已经拥有此设置,那么在修理工作时这样做会容易得多.

转载注明原文:审核SQL Server数据库中的记录更改 - 代码日志