有关在SQL Server中实现审核表的建议?
时间:2020-03-05 18:38:07 来源:igfitidea点击:
我过去使用的一种简单方法基本上是创建第二个表,该表的结构与我要审核的结构相同,然后在主表上创建更新/删除触发器。在更新记录/删除记录之前,当前状态通过触发器保存到审计表中。
虽然有效,但审计表中的数据并不是最有用或者最简单的报告依据。我想知道是否有人有更好的方法来审核数据更改?
这些记录的更新不应该太多,但是它是高度敏感的信息,因此对客户而言,所有更改都必须经过审核并易于报告,这一点很重要。
解决方案
回答
有内置的审计程序包吗? Oracle有一个很好的软件包,它甚至可以将审核更改发送到单独的服务器上,而任何正在修改SQL的坏人都无法访问。
他们的例子很棒...它显示了如何向任何修改审核表的人发出警报。
回答
我们期望该表的写作量与阅读量是多少?
我使用了一个审计表,其中表,列,OldValue,NewValue,User和ChangeDateTime的列具有足够的通用性,可以处理数据库中的任何其他更改,并且在将大量数据写入该表的同时,数据非常稀疏,因此可以在一天的低使用时段运行。
添加:
如果需要考虑数据量与报告数量之间的关系,则可以将审核表复制到只读数据库服务器,从而使我们可以在需要时运行报告,而不会使主服务器停止工作。
回答
OmniAudit可能是我们需要的一个很好的解决方案。我以前从未使用过它,因为我很高兴编写自己的审计例程,但这听起来不错。
回答
我使用Greg在他的答案中描述的方法,并使用从表触发器中调用的存储过程填充审核表。
回答
我发现这两个链接很有用:
使用CLR和单个审核表。
使用SQL 2005 CLR创建通用审核触发器
为每个要审核的表使用触发器和单独的审核表。
如何审核对SQL Server数据的更改?