删除与特定实体相关的审核日志数据

时间:2013-04-18 13:47:33

标签: dynamics-crm-2011 dynamics-crm

是否可以删除仅与特定实体相关的审核日志数据?我们有一个巨大的审计日志,我们希望通过清除特定实体的日志数据来减少这些日志,尽管我们确实希望保留其他实体的日志。

2 个答案:

答案 0 :(得分:4)

没有按实体类型删除审核日志条目的支持方法。审核删除的唯一方法支持是按日期(即,所有早于X日期的记录。)*注意:根据SQL环境,可用的结束日期可能仅限于审核日志分区的结束日期。 *

也就是说,有一种不受支持的方法可以满足这一要求。 关键:让您的CRM服务器脱机,备份数据库,并在尝试之前测试还原 - 没有可用于我建议的支持,因为这违反了Dynamics CRM 2011 SQL数据库上支持的操作。

审核日志存储在表dbo.AuditBase中。此表没有扩展基础,因此每个审计条目只需要记录一条记录。

您需要实体的ObjectTypeCode。您可以通过运行以下脚本从数据库中获取此信息:

SELECT [EntityId],[Name],[ObjectTypeCode]
FROM [].[MetadataSchema].[Entity] ORDER BY Name

现在您已经ObjectTypeCode只需将下面脚本中的xxxx替换为值并运行脚本。

DELETE FROM [].[dbo].[AuditBase] WHERE ObjectTypeCode = xxxx

特定实体类型的审核记录现已消失!

答案 1 :(得分:0)

我知道这不是您想要的,但有一条DeleteAuditDataRequest API消息可以在特定日期之前删除所有审核数据。

至于删除特定记录,我认为你不能。如果您尝试以下代码,您将收到以下错误'删除'方法不支持'audt'类型的实体

orgService.Delete("audit",auditId);

如果它是一个内部部署环境,您可以直接访问数据库,并且可以存档审计记录或通过SQL删除它们。

希望有所帮助。