You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解读CRM的Audit审计表并提取合并记录相关数据

CRM审计记录提取已合并标识的问题

我正尝试从CRM中提取所有已合并的记录,在联系人记录的"Audit History"页面看到如下内容:
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'

查询结果如下所示:
SQL查询结果截图
请问有谁知道如何从这些结果中获取标识记录确实已合并的"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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:48:01