【问题标题】:Aggregate Query limit exceeded?超出聚合查询限制?
【发布时间】:2012-04-25 05:50:03
【问题描述】:

我有一个两部分的问题:

第一个问题:我知道查询记录时有5000条记录的查询限制,出于性能原因,但是做聚合查询时有限制吗?如果是这样,它是什么?我只需要查询记录数,对于一个实体,我可以获得 39,000 多条记录的结果,但对于另一个实体,我会看到如下错误消息:

System.ServiceModel.FaultException 1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: AggregateQueryRecordLimit exceeded. Cannot perform this operation. (Fault Detail is equal to Microsoft.Xrm.Sdk.OrganizationServiceFault).

我一直在网上寻找,但找不到任何关于聚合/计数查询的查询限制。

第二个问题:有没有一种简单的方法可以查询大量记录的 COUNT 而不会影响性能?我不认为做一个计数应该需要太多的开销。如果有限制,我的想法是在循环中实现分页,并检索给定页面的计数,同时每次递增页码,直到返回 0 条记录。但是,当我尝试这样做时,它似乎忽略了初始 <Fetch> 标记的 pagecount 属性。

我想知道是否有更好/更简单的方法来做到这一点?

【问题讨论】:

    标签: vb.net dynamics-crm-2011 crm fetchxml


    【解决方案1】:

    我不能对你的第一个问题说太多,但它看起来像someone on MSDN may have found a workaround。实际解决方案请参见链接的论坛帖子。

    对于第二个问题,COUNT 比较容易处理。有关大量示例,请参阅 MSDN article on FetchXML aggregates

    <fetch distinct='false' mapping='logical' aggregate='true'> 
        <entity name='opportunity'> 
           <attribute name='name' alias='opportunity_count' aggregate='count'/> 
        </entity> 
    </fetch>
    

    为该查询生成的 SQL 如下:

    SELECT
        COUNT(*) AS opportunity_count
    FROM
        Opportunity
    

    【讨论】:

    • 谢谢。就像我说的,我有一个非常简单的 FetchXML 查询,它已经返回了计数,我认为它只是在总计数超过 50,000 时。我希望不必进行任何数据库更改,但看起来这可能是唯一的选择。那,或注册表更改。
    • @lhan16:好的,我明白你现在在说什么了。除了这个和直接的数据库查询之外,我只能说“祝你好运!”
    • 我想我要做的(因为我被告知此时不能选择更改数据库或更改注册表)只是捕获“超出查询限制”错误并显示总数为“50,000+”。感谢您的输入和链接!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多