我一直在为我的数据库中的几个表提供单个审计表的想法。我在此页面上找到了代码:http://www.simple-talk.com/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/
我喜欢这个主意,但我唯一感到困惑的是如何查询信息以便以有用的方式显示。
进行一些更改后,审计表如下所示:
大多数时候,为了做历史,我只会制作一份表格并添加日期 修改后的列到最后然后只将整行复制到历史表中,但是如果你有很多要审计的东西,它会创建大量的复制数据和许多历史表。
答案 0 :(得分:5)
另一种解决方案"梦魇" (爱戴夫的评论)是使用两个由审计触发器填充的审计表。您可以评估3rd party solution,它通过GUI创建触发器和审核表,然后检查它的实际工作方式。
免责声明:我在ApexSQL担任产品支持工程师
答案 1 :(得分:2)
我必须说,我认为这种审计模式是一场噩梦。而且我认为你偶然发现了原因。在使用这种方案时,重现数据是非常非常困难的,其中最重要的原因是你没有被改变的数据类型。即使你这样做,你也很可能在字符串和本机数据类型之间的转换中失去精确性。
不,我认为你最初的想法要好得多 - 只需简单地切割表格行。大多数情况下,您不必担心消耗的额外空间。与通过减少列的变化所做的可用性之间的权衡相比,空间便宜。
另请注意,文章描述的方案甚至不能为非常狭窄的表格节省空间!它实际上可能比行级审计更大。