我需要在表中记录所有更改。我在 SO 中浏览了许多关于数据审计日志的文章。对我来说,一切似乎都很复杂。
我计划在更新和删除数据之前保留所有表格的副本。这是一个好主意吗?
我需要在表中记录所有更改。我在 SO 中浏览了许多关于数据审计日志的文章。对我来说,一切似乎都很复杂。
我计划在更新和删除数据之前保留所有表格的副本。这是一个好主意吗?
如果我们只谈论一张桌子,那么是的。如果有几张桌子,那么也许。如果有很多表需要审核,那么不需要。
原因是您必须维护的重复表越多,它就会变得越复杂。此外,从许多表中报告可能会成为一项艰巨的任务。
这里有几个其他的想法:
用于存储的双表设计: 想法是在一张表中保留有关事务的详细信息(用户、主机、事务时间、表名、数据库名等),并在第二张表中保留数据更改(旧值、键等)
第三方工具:有几种工具可以提供不同级别的审计。ApexSQL Audit是一个基于触发器的审计工具,ApexSQL Log更高级,可以审计权限和架构更改,Idera 的Compliance manager是最高级的,甚至可以捕获 select 语句。
更改数据捕获:这是内置在 SQL Server 2008+ 中的,但仅在企业版中。
为了了解数据库中存在的每个表中所做的更改,我相信您应该选择 LepideAuditor for SQL Server。通过此工具,您可以跟踪有关数据库和 SQL Server 对象的创建、更改、删除活动的更改。它详细说明了对这些对象执行的所有操作的人员、内容、时间和地点。
如果您打算保留表的副本,我建议您查看数据库快照。它将帮助您创建数据库的只读副本,并且您可以轻松地还原表并将其与快照进行比较。
关于 SQL 审计,一开始创建有点困难,但是一旦你有一个工作,第二个审计将需要几分钟才能实现。
SQL 审计对于少数表来说是一个不错的选择。如果您有多个,请使用变更数据捕获或第三方工具,如 Lepide 或 apexsql 触发器。