2009-08-06 62 views
0

我一直在为我的数据库中的一些表提供单个审计表的想法。我发现在这个页面上的代码:http://www.simple-talk.com/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/查询单个审计表以进行报告

我喜欢这个想法,但唯一让我感到有点困惑的是你如何查询信息,以便它可以以有用的方式显示。

后你做一些修改审计表看起来像这样: alt text

大部分时间

为了做历史,我只想做表的副本和日期 修改列添加到末尾,则只需将整行复制到历史记录表中,但如果您有许多事项需要审核,则会创建大量复制数据和大量历史记录表。

回答

2

我必须说我认为这种审计模式是一场噩梦。我想你已经无意中发现了原因。使用这种方案重现数据非常非常困难,原因不在于您没有数据类型的变化。即使你这样做了,你在字符串和原生数据类型之间的转换中也会失去精确度。

不,我认为你最初的想法要好得多 - 只是简单地将表格行切掉即可。大多数情况下,您不必担心消耗的额外空间。空间比较便宜,比较了通过按列降低更改的可用性折衷。

另外请记住,文章描述的方案甚至不会为非常狭窄的表节省空间!它实际上可能比行级审计更大。

+0

我想一个产品支持工程师这取决于你打算如何使用您的审计数据的工作。例如,假设您有一个拥有50个相关表的员工。如果用户想要查看自某个特定日期以来员工发生变化的所有内容,那么查询50个表格将是一场噩梦。但是,对于单个表来说,这将是微不足道的。但是,如果您需要自动恢复审计数据,而不是仅仅报告它,我会全心全意地同意您的意见。 – 2010-11-13 06:29:08

5

对这个“噩梦”(Dave的评论)的另一种解决方案是使用由审计触发器填充的两个审计表。您可以评估通过GUI创建触发器和审计表的3rd party solution,然后检查它是如何实际工作的。

Dislaimer:我作为ApexSQL