审核SQL Server数据更改

时间:2009-04-27 14:06:29

标签: sql sql-server-2005 sql-server-2008

我正在考虑更改SQL Server 2005数据库的审核流程,并且我在SQL Server 2008中遇到了Change Data Capture。

这看起来是一个好主意,我很想尝试,但在我做之前,有人在商业环境中使用它,你有什么想法?

我注意到当我在MS帮助中阅读有关CDC时,它说审计数据通常会保留几天。这在这里是不可能的,我想无限期保留数据,有没有人知道这种方法的问题?

如果由于我不知道的原因这不是一个好的解决方案,那么您是否有任何其他解决方案来审核数据更改。我很想使用一个可以在我想要的任何桌子上全面实施的系统。

我是基本的:“之前,之后,Who By,When”信息是否有任何变化。

5 个答案:

答案 0 :(得分:9)

在我看来,CDC应该只是达到目的的手段。我过去实施过审计跟踪解决方案,他们参与了触发器的使用。对于高度事务性的数据库来说,这非常混乱和性能密集。

CDC为您提供的是能够在不使用触发器的情况下记录审计数据,但您仍需要一种方法将数据转换为永久表。这可以通过每个要审计的表的镜像表来完成,也可以通过单个表来跟踪所有表的所有更改(我已完成后者)。

以下是一些链接,其中包含有关如何使用触发器执行操作的其他信息:
SQL Audit Trail
sql-server-history-table-populate-through-sp-or-trigger

这是一个使用LINQ的开源审计跟踪解决方案:DoddleAudit

答案 1 :(得分:7)

很晚但希望它对其他读者有用......

以下是几种不同的审核技巧及其优缺点。没有适合所有人的“正确”解决方案。这取决于要求和被审计的系统。

<强>触发器

  • 优势:相对容易实施,审核内容具有很大的灵活性,以及​​如何通过完全控制来存储审核数据
  • 缺点:当你有很多桌子甚至更多的触发器时,它会变得混乱。除非有一些第三方工具可以提供帮助,否则维护工作会很重。此外,根据数据库,它可能会对性能产生影响。

<强> CDC

  • 优势:非常易于实施,原生支持
  • 缺点:仅适用于企业版,不是非常强大 - 如果更改架构,您的数据将会丢失。我不建议这样做以保持长期审计跟踪

<强>痕量

  • 优势:对正在审核的内容具有很大的灵活性。甚至可以审核选择语句。
  • 缺点:您需要创建一个单独的应用程序,以便解析跟踪文件并从中收集有用的信息。

阅读交易记录

  • 优势:您需要做的就是将数据库置于完全恢复模式,所有信息都将存储在事务日志中
  • 缺点:您需要第三方日志阅读器才能有效阅读

我使用了ApexSQL中的几个审核工具,但Idera(合规经理)和Krell软件(全方位审核)也提供了很好的工具

ApexSQL Audit - 基于触发器的审核工具。生成并管理审计触发器

ApexSQL Log - 允许通过阅读事务日志进行审核

答案 2 :(得分:1)

在SQL Server 2008中,您可以使用“审核”功能并在文件,应用程序日志或系统日志中存储数据。在以下网址找到更多信息:http://msdn.microsoft.com/en-us/library/cc280386.aspx

答案 3 :(得分:0)

您可以编辑Sql Server作业,该作业会在两天后删除捕获的更改。您也可以根据自己的方便延长此清理时间,或将其永久化。

答案 4 :(得分:0)

我正在使用this脚本,您可以定义您希望审核的表或您在数据库中定义的所有表。另外,tvf可以查看历史记录。查看链接,了解详细信息。