2017-02-16 6 views
0

Я обращаюсь к динамическим данным CRM через fetchxml в C#. Когда я пытаюсь выполнить следующий запрос, я становлюсь ниже ошибки.CRM fetchxml - AggregateQueryRecordLimit превышен

AggregateQueryRecordLimit превышен. Не удается выполнить эту операцию.

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' aggregate='true'> 
    <entity name='productclass'> 
    <attribute name='classificationidid' groupby='true' alias='classidid'/> 
    <attribute name='productidid' aggregate='count' alias='ProductCount' /> 
     <filter type='and'> 
     <condition attribute='classidid' operator='in'>" + cIds + @"</condition> 
     </filter> 
    </entity> 

Как решить эту проблему?

ответ

0

Это связано с тем, что объект productclass содержит больше записей, чем текущий предел в настройке AggregateQueryRecordLimit.

Вы можете изменить это с помощью расширений Powershell, описанных здесь: http://msdn.microsoft.com/en-us/library/2a4061cd-e6b4-4672-8c44-20a27c523718

Полный список параметров доступен на http://msdn.microsoft.com/en-us/library/gg334634.aspx Помните, что изменение этого параметра может повлиять на производительность.

0

CRM пытается спасти себя от задыхания на непропорциональном количестве данных.

Что я хотел бы предложить для оптимизации процесса, было бы выполнение нескольких запросов, по одному для каждого элемента cIds (таким образом, переход от in к оператору eq, IIRC). В итоге вы получите один результат для каждого элемента, который вы сможете объединить в код (это просто с LINQ).

Еще одно предложение, которое у меня есть, - это обновить CRM: в последних версиях у вас есть поля для свертывания, которые предназначены для выполнения агрегаций по соответствующим записям.

Смежные вопросы