有没有一种方法可以生成 CRM 中所有实体的列表,以及它们是否打开了审计历史记录?

Is there a way I can generate a list of all entities in CRM and if they have audit history turned on or not?

我检查了 CRM SQL 数据库中的一个实体,但没有指定审计历史记录的列。我知道有一种方法可以通过 CRM 的在线门户启用/禁用它,但这需要很长时间才能看到哪些实体启用了它,哪些实体禁用了它。

我试过四处寻找,但找不到太多关于该主题的信息,所以我想看看这里是否有人对此有所了解或有任何经验。

以下是 Microsoft 页面上关于通过在线门户访问它的引述:

Click the entity for which you want to start or stop auditing. To start auditing, on the General tab, in the Data Services section, select the Auditing check box. To stop auditing, clear the check box.

http://crmbook.powerobjects.com/basics/data-management-in-microsoft-dynamics-crm/auditing-in-microsoft-dynamics-crm/

如果我可以添加任何内容以使我的问题更清楚,请告诉我。

一次性下载 XrmToolBox 和 enable/disable 审核。

审核中心插件帮你完成魔法

Read more

更新: 安装 xrmtoolbox 后,连接到 Org,单击 'Audit center',单击 'Load data' - 将列出已审核的实体和属性:

再次向您推荐 XrmToolbox....元数据浏览器可以满足您的需求:

请注意,对于此屏幕截图,我使用“列”按钮将 IsAuditEnabled 列尽可能向左移动。

并且由于您表示您可以访问 SQL,这里有一个查询:

SELECT EntityId, Name, IsAudited
FROM MyOrg_MSCRM.MetadataSchema.Entity

如果您希望在 C# 中执行此操作,RetrieveAllEntitiesRequest class 是一个很好的起点。

使用名为 SQL 4 CDS 的 XRMToolbox 工具并使用以下查询获取启用审计的所有实体和属性。您可以将数据复制到 excelsheet,然后就可以了。祝你好运。

  SELECT attribute.displayname AS "Attribute Display Name",
       attribute.logicalname AS "Attribute Logical Name",
       entity.displayname AS 'Entity Display Name',
       attribute.entitylogicalname AS "Entity Logical Name"
FROM   attribute
       INNER JOIN
       entity
       ON attribute.entitylogicalname = entity.logicalname
WHERE  attribute.isauditenabled = 1
and entity.isauditenabled =1;