Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 2010:以编程方式向大型库添加文档_Sharepoint_Sharepoint 2010 - Fatal编程技术网

Sharepoint 2010:以编程方式向大型库添加文档

Sharepoint 2010:以编程方式向大型库添加文档,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我们有一个系统,使用web界面将文档上载到SharePoint库。我正在使用客户端API完成这项工作。具体来说,我使用SaveBinaryDirect上传文档,然后使用CAML查询检索文档,以便设置元数据列。CAML查询根据FileLeafRef字段检索文档,该字段由上载文档的文件名填充 问题在于,SharePoint对任何查询返回的项目设置了5000个的最大限制,因此一旦文档库增加到5000个项目,CAML查询将不再工作。(尽管它只返回单个文档,但显然需要扫描整个库) 我已经调查了索引列,但显

我们有一个系统,使用web界面将文档上载到SharePoint库。我正在使用客户端API完成这项工作。具体来说,我使用SaveBinaryDirect上传文档,然后使用CAML查询检索文档,以便设置元数据列。CAML查询根据FileLeafRef字段检索文档,该字段由上载文档的文件名填充

问题在于,SharePoint对任何查询返回的项目设置了5000个的最大限制,因此一旦文档库增加到5000个项目,CAML查询将不再工作。(尽管它只返回单个文档,但显然需要扫描整个库)

我已经调查了索引列,但显然您无法索引FileLeafRef,而且它似乎是唯一一个在上传后立即填充文档名的字段。 我已经通过将项目限制从5000增加到10000来推迟问题,但是我们即将遇到这个新的限制,人们开始报告间歇性性能问题


有没有办法通过客户端API上传文档并设置其元数据而不超过最大项目限制?

也许您可以创建另一个字段(文本字段),该字段将是FileLeafRef的简单副本,然后为这个新字段编制索引?

通过不依赖CAML来定位文件,解决了这个问题。相反,我使用的是GetFileByServerRelativeUrl,它不受项目限制。file对象有一个名为ListItemAllFields的方法,允许您查询和设置元数据

如果需要使用文件名以外的条件返回项目,上述方法将允许最初设置元数据,从而可以存储和索引满足查询所需的任何条件


如果需要根据未编入索引或无法编入索引的条件查询大型列表,则解决方案似乎涉及使用ContentIterator对象以小批量方式吐出列表。但这似乎不适用于客户端API,因此我不知道如何以编程方式处理大型列表。

您可以尝试看看使用连接器是否有任何性能优势。例如。这种工具是为了处理像你这样的情况而建的。如果第三方软件不是一个选项,请考虑张贴一些你的CAML,这样我们就可以看到你正在做什么样的选择。有趣的软件。您知道它是否能够绕过所提到的项目限制吗?它还应该通过在选择中声明限制或在connectionstring中设置DefaultLimit参数来处理这一问题,不幸的是,复制FileLeafRef的行为需要读取相关字段,这将由于列表视图阈值而失败。