在SQL Server中实现审计表的建议?

Bra*_*ood 31 sql database sql-server audit

我过去使用的一个简单方法基本上就是创建第二个表,其结构镜像我想要审计的表,然后在主表上创建更新/删除触发器.在更新/删除记录之前,当前状态将通过触发器保存到审计表中.

虽然有效,但审计表中的数据并不是最有用或最简单的报告.我想知道是否有人有更好的方法来审核数据变化?

这些记录的更新不应太多,但它是高度敏感的信息,因此对客户而言,所有更改都经过审核并易于报告,这一点非常重要.

Gre*_*man 18

你对这张表的阅读与阅读量有多大关系?

我使用了一个审计表,其中包含Table,Column,OldValue,NewValue,User和ChangeDateTime的列 - 通用程序足以与DB中的任何其他更改一起使用,并且当大量数据写入该表时,报告这些数据非常稀少,可以在当天的低使用期运行.

补充: 如果需要考虑数据量与报告的数量,可以将审计表复制到只读数据库服务器,这样您就可以在必要时运行报告,而不会让主服务器停止工作.


小智 6

我们正在使用两个表设计.

一个表保存有关事务的数据(数据库,表名,模式,列,触发事务的应用程序,启动事务的登录的主机名,日期,受影响的行数以及更多).

第二个表仅用于存储数据更改,以便我们可以根据需要撤消更改并报告旧/新值.

另一种选择是使用第三方工具,例如SQL Server中的ApexSQL Audit或Change Data Capture功能.