数据变更审计计划

Lum*_*mpy 3 sql-server audit

我的公司正在从分布式 Access 数据库模型转变为使用集中式 SQL 数据库。数据表的设计使得所有表都具有修改日期。在讨论中,有人建议,由于我们将在每个表上创建一个触发器来处理修改日期,也许我们应该让触发器也将一些信息记录到审计表中。

这是设置审计的最佳方法,以便我们可以跟踪谁在更改信息,还是有更好的方法?欢迎提供有关该主题的文章的链接。

对于审计,我正在考虑捕获表名、列名、修改日期、行 ID 和进行更改的人的用户名。是否有任何我没有想到应该捕捉的信息可以帮助我避免未来的跌倒?

Con*_*lls 7

不要费心在每个字段的基础上跟踪审计数据。拥有与主表具有相同结构的审计表以及在表上跟踪的时间戳和用户信息要容易得多。

这种架构有几个优点:

  • 您可以轻松创建跨主表和审计表的视图,以显示完整的历史记录,包括当前版本。
  • 实现审计触发器相对简单——事实上,如果你有大量的表,你可以编写一个实用程序来从系统数据字典中生成它们。
  • 审计表可以放在单独的磁盘上,以减少主表磁盘上的 I/O 负载。
  • 重建记录的 as-at 版本非常容易,而不必反向应用字段级更改列表。

审核信息至少应包括:创建/更改记录的用户、创建/更改的日期/时间、更改的性质(插入、更新、删除)。如果您可以选择这样做,您可能希望使用逻辑删除(即“已删除”标志)。否则,您需要从会话中捕获用户和日期/时间并将它们放在删除记录中,可能与记录的最后状态一起。如果这在连接中不可用(通常在 N 层应用程序中,用户不是在数据库级别被模拟),那么您需要找到其他方法来获取它。