如何解读CRM的Audit审计表并提取合并记录相关数据
CRM审计记录提取已合并标识的问题
我正尝试从CRM中提取所有已合并的记录,在联系人记录的"Audit History"页面看到如下内容:
点击该条目后将显示如下内容:
我对代码进行性能分析以确认执行的SQL语句,发现运行的查询如下:
exec sp_executesql N'select "audit0".AuditId as "auditid" , "audit0".AttributeMask as "attributemask" , "audit0".ChangeData as "changedata" , "audit0".CreatedOn as "createdon" , "audit0".Action as "action" , "audit0".Operation as "operation" , "audit0".CallingUserId as "callinguserid" , "audit0".UserId as "userid" , "audit0".ObjectId as "objectid" , "audit0".ObjectTypeCode as "objecttypecode" , "audit0".CallingUserIdName as "callinguseridname" , "audit0".UserIdName as "useridname" , "audit0".ObjectIdName as "objectidname" from Audit as "audit0" where ("audit0".AuditId = @AuditId0)',N'@AuditId0 uniqueidentifier', @AuditId0='7FE1B120-87EC-E811-8BE0-005056B12EA2'
查询结果如下所示:
请问有谁知道如何从这些结果中获取标识记录确实已合并的"Yes"记录?我无法理解这些结果是如何对应显示为旧值/新值的。
解答
你可以通过以下规则直接从CRM的Audit表中筛选出合并成功的联系人记录:
- 首先筛选
Action字段值为22的记录,Dynamics CRM中该值固定对应记录合并操作,如果你只要联系人的合并记录,额外加ObjectTypeCode = 2的筛选条件即可(联系人实体的ObjectTypeCode固定为2)。 - 解析
AttributeMask和ChangeData的对应关系:AttributeMask存储的是本次操作涉及的所有字段的元数据ID,按逗号拆分后,每一个位置的ID对应ChangeData按逗号拆分后同位置的变更值- 合并操作的
ChangeData中,对应IsMerged字段的位置值为1时,就是页面上显示的"Yes",代表合并成功
- 如果你需要直接查询所有合并成功的联系人记录,可以参考以下SQL:
SELECT auditid, createdon 合并时间, callinguseridname 操作人, objectid 合并后主记录ID, objectidname 合并后主记录名称, changedata 变更详情 FROM Audit WHERE Action = 22 AND ObjectTypeCode = 2 AND ChangeData LIKE '%,1' -- 对应IsMerged=1即合并成功
- 旧值/新值的对应规则:CRM审计记录中,普通变更操作的
ChangeData里,奇数位是旧值,偶数位是新值;合并操作的结构特殊,前几位分别对应被合并记录ID、主记录ID、合并操作标识位、成功标识位,按顺序匹配即可。
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

