sharepoint - 如何从启用了限制的大列表中获取?

标签 sharepoint sharepoint-2010 throttling

我们有一个包含 50.000 个项目的 SharePoint 列表,并希望从中获取一些数据而不禁用 SP2010 的默认限制。

来自 MSDN关于处理大型列表,我们认为关键因素是在 SPQuery 上使用一个小的 RowLimit,并使用 ListItemCollectionPosition 进行批处理。

但是,对于我们这样的代码(某些东西),仍然会触发限制异常:

SPQuery query = new SPQuery();
query.Query = "<Where><Contains><FieldRef Name=\"MatterName\" /><Value Type=\"Text\">7476922</Value></Contains></Where>";
query.ViewFields = "<FieldRef Name=\"MatterName\"/>";
query.RowLimit = 10;

int index = 0;
do
{
    SPListItemCollection batch = mattersList.GetItems( query );

    query.ListItemCollectionPosition = batch.ListItemCollectionPosition;
} 
while ( query.ListItemCollectionPosition != null );

根据 SharePoint Connections 2010 的 MVP 专家的说法,这是设计使然,因为结果集上的隐式排序仍会触发 5000 项限制阈值。

哪个很好,但是我们如何从这个列表中获取呢?会使用 ContentIterator是更好的选择?如果是这样,内容迭代器为实现这一目标而发挥的魔力是什么?

最佳答案

您可以使用:

query.QueryThrottleMode = SPQueryThrottleOption.Override;

通过以 super 用户身份执行查询。

http://adicodes.com/sharepoint-2010-list-throtelling/

关于sharepoint - 如何从启用了限制的大列表中获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833475/

相关文章:

javascript - 在 Javascript 中嵌入 Sharepoint Web 部件

database - 用于在特定记录处打开 Access Web DB 表单的 URL

ios - 有效地发送数据而不会出现频带饱和 (iOS)

php - 如何在中间件 Laravel 5 中捕获 "too many attempt"异常

sharepoint - 信任设置为完全,但 Web 部件仍然导致 SecurityException

sql - 在 SharePoint 2010 中指定不同的数据库服务器

sharepoint - 通过网络服务将文件上传到共享点的任何方式

c# - 部署步骤中发生错误 'Retract Solution' : <CLASS> cannot be deserialized because it does not have a public default constructor

c# - 在 system.net 中增加 "maxconnection"设置有什么缺点吗?

共享点 2007 : How to set column level permission?