2013-07-19 61 views
6

我試圖根據日期範圍創建一個自定義審計摘要報告,需要通過電子郵件每晚。我大部分工作正常,但需要一些幫助來獲取引用實體的主名稱/字段/屬性。我在審計視圖中注意到引用的實體,數據存儲爲'systemuser;'。我想要做的是獲取主要字段(主要名稱,主要屬性,無論它叫什麼)以顯示在報告上。有誰知道如何找到使用CRM SQL數據庫中的MetadataSchema視圖的實體的主名稱屬性?我通過查看MetadataSchema.Attribute.IsPKAttribute字段找到了主鍵字段,但我沒有看到任何關於主名字段的內容。Dynamics CRM 2011 SQL MetadataSchema主要名稱屬性

此外,如果沒有以下審覈項目,我將從實體中獲取當前值。對於查找字段(如擁有者或客戶),我如何從元數據中知道哪些字段存儲了ObjectTypeCode?例如,如果我在銷售訂單上查找客戶,我知道可以查看CustomerIdType字段來查找ObjectTypeCode,但我需要從元數據中找到該字段被稱爲CustomerIdType。

如果有人對CRM的SQL方面的元數據有很好的參考,我將不勝感激。

回答

7
  1. 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 
    
  2. 有兩種情況獲得查找的對象類型代碼

    • 追加Type到字段名(即客戶ID 類型
    • 如果上面沒有,從AttributeMetadata 得到它

      SELECT ReferencedEntityObjectTypeCode 
      FROM [Discworld_MSCRM].[dbo].[AttributeView] 
      where name = '<field name>' and entityid = '<entity id>' 
      

    我不知道什麼確切的規則是存在

+0

類型的字段是什麼「和」的意思是,如果你的查詢?爲什麼不只是做一個.DisplayMask = 256? –

+0

@MeggieLuski&是二元和運算符。據我記得這個字段存儲其他標誌。語句'&256'檢查是否設置了特定標誌。 – MarioZG