我正在尝试根据需要每晚通过电子邮件发送的日期范围创建自定义审核摘要报告。我已经完成了大部分工作,但需要一些帮助来获取引用实体的主要名称/字段/属性。我在Audit视图中注意到引用的实体,数据存储为'systemuser;'。我想要做的是抓住主要字段(主要名称,主要属性,无论它叫什么)以显示在报告上。有没有人知道如何使用CRM SQL数据库中的MetadataSchema视图查找实体的Primary Name属性?我通过查看MetadataSchema.Attribute.IsPKAttribute字段找到了Primary Key字段,但是我没有看到Primary Name字段的任何内容。
另外,如果没有以下审核条目,我会从实体中获取当前值。对于查找字段(如所有者或客户),如何从元数据中分辨哪个字段存储ObjectTypeCode?例如,如果我在销售订单上查找客户,我知道我可以查看CustomerIdType字段以查找ObjectTypeCode,但我需要发现该字段从元数据中称为CustomerIdType。
如果有人从CRM的SQL端对元数据有任何好的参考,我将不胜感激。
答案 0 :(得分:7)
SQL查询以获取所有实体的主要字段
SELECT e.Name as 'entity', a.Name as 'primary field'
FROM [dbo].EntityView e
left join [dbo].AttributeView a on e.EntityId = a.EntityId
where (a.DisplayMask & 256) > 0 --256 is for primary field
order by e.name
有两种情况可以获取查找的对象类型代码
Type
附加到字段名称(即CustomerId 类型)如果上面的内容不可用,请从AttributeMetadata获取
SELECT ReferencedEntityObjectTypeCode
FROM [Discworld_MSCRM].[dbo].[AttributeView]
where name = '<field name>' and entityid = '<entity id>'
我不确定类型字段存在的确切规则