Проблема с Caml-списком sharepoint, потому что он превышает пороговое ограничение
Я получаю сообщение об ошибке ниже, когда запрашиваю список SharePoint, список содержит 5005 записей, а пороговое ограничение равно 5000. У меня есть список sharepoint, содержащий разные папки, и я использую CAML-запрос с RecursiveAll для получения записей из всех папок. Я получаю эту ошибку:-
Попытка операции запрещена, поскольку она превышает пороговое значение представления списка, установленное администратором. в Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream) в Microsoft.SharePoint.Client.ClientRequest.ProcessResponse() в
Мой запрос
"<View Scope='RecursiveAll'> <RowLimit>1000</RowLimit><Query><Where><Eq><FieldRef Name='Year' /><Value Type='Text'>" + Period + "</Value></Eq></Where></Query></View>";
Год индексируется столбцом. Если я удаляю пункт where, он начинает работать. Мне кажется recursiveall
не работает с where
пункт.
Я не хочу менять пороговый лимит списка.
2 ответа
Чтобы преодолеть эту проблему, вам нужно будет использовать ContentIterator. По сути, вы разбиваете запрос на группы, например, по 2000 единиц. С веб-сайта Microsoft:
SharePoint Server предоставляет новый API ContentIterator, который помогает получить доступ к более чем 5000 элементам в большом списке, не превышая ограничения регулирования списка и не получая исключение SPQueryThrottleException. ContentIterator реализует шаблон обратного вызова для сегментирования запроса для обработки одного элемента за раз. Подумайте об использовании этой возможности, если вам нужно обработать большое количество элементов, которые могут превысить предел регулирования. В следующем тривиальном примере демонстрируется подход, используемый с протестированным ContentIterator со списком, возвращающим 20 001 элемент из запроса.
Официальную документацию смотрите здесь.
Этот пример также может помочь.
Пороговое значение по умолчанию для списка составляет 5000. Вам нужно изменить параметры конфигурации SharePoint для этого списка, чтобы иметь более высокий порог. Не уверен, в какой версии SharePoint вы находитесь, но если вы можете получить доступ к Central Admin, вот статья, объясняющая, как ее изменить.
Если вы используете SharePoint Online, я думаю, что вы застряли, но у одного из этих ответов есть предполагаемое решение этой проблемы.