【问题标题】:SharePoint API CAML View: Even with a rowlimit when I include a Query in the CAML I get a list threshhold errorSharePoint API CAML 视图:即使有行限制,当我在 CAML 中包含查询时,我也会收到列表阈值错误
【发布时间】:2020-03-30 05:24:12
【问题描述】:

我不确定我的 CAML 查询中有语法错误,或者我误解了 API 的工作原理,但我有一个非常大的文档库,我试图在其中识别没有合规/保留标签的项目设置。

我的查询试图返回库中没有将合规性保留标签设置为“测试”的任何项目。这是查询,但不管行限制如何,控制台应用程序都会返回阈值错误...“禁止尝试的操作,因为它超出了管理员强制执行的列表视图阈值。”

<View Scope='RecursiveAll'><RowLimit>20</RowLimit><Query><Where><Neq><FieldRef Name='_ComplianceTag'/><Value Type='String'>Test</Value></Neq></Where></Query></View>

我一直在尝试最基本的查询,我可以确认这是可行的......

<View Scope='RecursiveAll'><RowLimit>20</RowLimit></View>

但是,一旦我将元素添加到 CAML,我就会收到错误消息。似乎一旦添加了查询,它就会忽略我的行限制。计划是将这些物品小批量带回并贴上标签。我已经构建了一个控制台应用程序,它使用 SetComplianceTag 到库方法。这会将标签应用于库中的所有内容,但不幸的是,我的库太大了,我们发现它错过了一些。

任何见解都将不胜感激。

【问题讨论】:

  • 我不应该读过许多类似的问题,其中大部分解决方案是索引列。目前我不能确定我们的客户是否愿意这样做,所以我正在尝试探索没有列索引的任何选项。

标签: sharepoint-online caml sharepoint-rest-api


【解决方案1】:

进一步阅读后,我现在了解查询是在整个列表上执行的,因此无论您的 CAML 中的 rowLimit 是多少,都会应用限制。我现在已经复制并改编了 Piyush K Singh 在下面链接的教程中所做的事情。有一个 ListItemCollectionPosition 对象可以处理将您的 API 请求分成行限制中指定的大小的批次。然后我循环遍历每个批次,寻找符合我指定条件的项目...

https://piyushksingh.com/2016/12/04/query-listitems-in-batches-sharepoint-online/

谢谢皮尤什!

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多