是否可以仅删除与特定实体有关的审计日志数据?我们有一个巨大的审计日志,我们希望通过清除特定实体的日志数据来减少它,尽管我们确实希望保留其他实体日志。
2 回答
不支持按实体类型删除审计日志条目的方法。唯一支持审计删除的方法是按日期(即所有早于 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
特定实体类型的审计记录现已消失!
我知道这不是您要查找的内容,但是您可以调用DeleteAuditDataRequest API 消息来删除特定日期之前的所有审计数据。
至于删除特定记录,我不相信你可以。如果您尝试以下代码,您将收到以下错误“删除”方法不支持“审计”类型的实体
orgService.Delete("audit",auditId);
如果是本地环境,您可以直接访问数据库,并且可以归档审计记录或通过 SQL 删除它们。
希望有帮助。