1

我的SharePoint网站拥有包含大型数据的大型列表 我必须获取所有项目并在gridview中显示它们? 我使用下面的代码和提示以下错误:如何获取Large Sharepoint列表项目(> 10000)并将其写入文本文件

“尝试的操作被禁止,因为它超出了管理员强制实施的列表视图阈值”

private void GetData() 
    { 
     using (SPSite site = new SPSite("URL")) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       SPList list = web.Lists.TryGetList("BulkData"); 

       if (list != null) 
       { 
        SPQuery query = new SPQuery(); 
        query.Query = "<Where><IsNotNull><FieldRef Name=\"Title\" /></IsNotNull></Where>"; 
        query.QueryThrottleMode = SPQueryThrottleOption.Override; 
        SPListItemCollection items = list.GetItems(query); 
        int itemCount = items.Count; 
        StringBuilder sb = new StringBuilder(); 
        string str1 = string.Empty; 
        foreach (SPListItem item in items) 
        { 
         int i = 1; 
         sb.Append("\r\n").Append(Convert.ToString(item["Title"])).Append("\r\n"); 
         i++; 
        } 
        Log(sb); 
       } 
      } 
     } 
    } 

区域日志文件

public void Log(StringBuilder ErrorMessage) 
    { 

     string LogFileTime = DateTime.Now.ToString("ddMMyyyyHHmmss"); 
     string LogFilePath = Server.MapPath(@"~\\Logs\"); 
     if (!File.Exists(LogFilePath + "BulkData" + LogFileTime + ".txt")) 
     { 
      var LogFileName = File.Create(LogFilePath + "BulkData" + LogFileTime + ".txt"); 
      var WriteToLogFile = new StreamWriter(LogFileName); 
      WriteToLogFile.Write(ErrorMessage); 
      WriteToLogFile.Close(); 
      LogFileName.Close(); 
     } 


    } 
    #endregion 

回答

0

尝试使用SPQuery.RowLimit指定要提取的项目数。 (MSDN链接也有一个在多个页面中加载数量有限的项目的示例)

+0

我仍得到相同的错误 – 2014-11-06 08:09:13

1

您必须修改中央管理中的列表视图阈值,默认设置为5000个元素。

为了最大限度地减少数据库争用,SQL Server经常使用行级锁定作为一种策略,以确保准确的更新,而不会对正在访问其他行的其他用户造成不利影响。

但是,如果读取或写入数据库操作(如查询)导致超过5,000行被同时锁定,那么SQL Server会更有效地将锁定升级到整个表,直到数据库操作完成了。

enter image description here

查看MSDN

此链接请参阅此链接instructions step-by-step

但是,如果你必须代码,你可以

SPQuery q1 = new SPQuery(); 
q1.QueryThrottleMode = SPQueryThrottleOption.Override; 

注意改变这个值!请记住将权限授予将运行代码的帐户。

有关详细信息,请参见this link

+0

我必须以编程方式处理它 – 2014-11-04 10:22:44

+0

@vishalgoyal看到我的更新答案 – Max 2014-11-04 11:11:55

+0

@vishalgoyal你看到使用'SPQueryThrottleOption'我更新的答案吗? – Max 2014-11-06 22:21:59

相关问题