C# sharepoint列表caml查询问题,因为它超过阈值限制
查询SharePoint列表时出现以下错误,该列表有5005条记录,阈值限制为5000。 我有一个sharepoint列表,其中包含不同的文件夹,我使用CAML查询和RecursiveAll从所有文件夹中获取记录。 我得到这个错误:- 尝试的操作被禁止,因为它超出了列表视图 管理员强制执行的阈值。在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(流 响应(团队)在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()位于 我的问题是C# sharepoint列表caml查询问题,因为它超过阈值限制,c#,sharepoint,sharepoint-2013,csom,on-prem,C#,Sharepoint,Sharepoint 2013,Csom,On Prem,查询SharePoint列表时出现以下错误,该列表有5005条记录,阈值限制为5000。 我有一个sharepoint列表,其中包含不同的文件夹,我使用CAML查询和RecursiveAll从所有文件夹中获取记录。 我得到这个错误:- 尝试的操作被禁止,因为它超出了列表视图 管理员强制执行的阈值。在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(流 响应(团队)在 Microsoft.SharePoint.Clie
"<View Scope='RecursiveAll'> <RowLimit>1000</RowLimit><Query><Where><Eq><FieldRef Name='Year' /><Value Type='Text'>" + Period + "</Value></Eq></Where></Query></View>";
“1000”+句点+”;
年份是索引列。如果我删除where子句,它将开始工作。在我看来,recursiveall
似乎不适用于where
子句
我不想更改列表阈值限制。列表的默认阈值为5000。您需要更改此列表的SharePoint配置设置以具有更高的阈值。不确定您使用的SharePoint版本,但是否可以访问管理中心
如果您正在使用SharePoint Online,我想您可能会被卡住 要解决此问题,您需要使用ContentIterator。基本上,您是将查询分解为一批,例如2000个项目。从Microsoft网站: SharePoint Server提供了一个新的API ContentIterator来帮助 在不点击列表的情况下访问大列表中的5000多个项目 限制限制并接收SPQueryThrottleException。 ContentIterator实现了一种用于分割查询的回调模式 用于一次处理单个项目。考虑使用这种能力 如果您需要处理大量可能超过 节流限制。下面的简单示例演示了 ContentIterator使用的方法使用返回20001的列表进行测试 查询中的项目 有关正式文档,请参阅
这也可能有帮助。您想要纯javascript解决方案吗?我有一个CSOM c#解决方案,我应该发布吗?你能分享你正在使用的代码吗?应该指出的是,虽然上述方法可能会解决你的问题,但Microsoft不建议这样做,因为它可能会导致其他问题(延迟、巨大延迟等)。批处理请求可能是一个更好的解决方案,即使它的实现有点困难。“这是O365和内部部署SharePoint之间的关键区别之一。使用内部部署SP,您实际上可以提高阈值限制并绕过该错误,但它确实会产生后果,因为您的SQL Server将受到重大资源损失。”