AuditBase 清理

排查Dynamics CRM各个Entity table的大小, 发现AuditBase占了很大的数量,本来准备直接SSMS下Script删除,不过网上查了一下,可以使用CRM自己的Audit Log Management来清理,这样安全很多

步骤如下

1. Setting->System->Auditing

image

2. 选择“Audit Log Management”

image

3. 选择特定时间的Audit Log,就可以删除掉了

 

这时候就有问题了,如果要删除针对一个Entity的audit log,那就不能只是通过这里的界面来操作了,只能通过Script来做了(Audit Entity 只有AuditBase这个table,没有额外的extension table)

select en.name, count(ab.auditid) from [dbo].[AuditBase] ab inner join [MetadataSchema].[Entity] en on ab.[ObjectTypeCode] = en.[ObjectTypeCode]
group by en.name
order by count(ab.auditid)
desc

begin tran
delete ab from [dbo].[AuditBase] ab inner join [MetadataSchema].[Entity] en on ab.[ObjectTypeCode] = en.[ObjectTypeCode]
where en.name = 'account' and ab.createdon <'2015-11-01'

commit

更进一步的话可以用script找出原始数据,根据原始数据的属性来删除,例如对于交易数据,如果该交易数据已经被关闭,这样它的相关的audit log就可以删除掉了,这就涉及到数据清理原则的设计了,与公司的商业流程息息相关。

再有就是Audit虽然很有用,但是在开启的时候,尤其是field audit的时候,要有针对性的,根据实际的需要来开启,而不是全面开启,那样就有点滥用了。

posted @ 2016-01-08 10:17  lightyun  阅读(476)  评论(0编辑  收藏  举报