2017-09-08 12 views
3

SharePointリストをクエリする際にエラーが発生します。リストには5005個のレコードがあり、しきい値の制限は5000です。 私は異なるフォルダを持つ共有ポイントリストを持っています。すべてのフォルダからレコードを取得します。 私はこのエラーを取得しています: - それは、管理者によって強制リストビュー しきい値を超えているため共有リストが限界値を超えているためcamlクエリの問題

しようとした操作が禁止されています。

で Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()で Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(ストリーム responseStream)で私のクエリは

"<View Scope='RecursiveAll'> <RowLimit>1000</RowLimit><Query><Where><Eq><FieldRef Name='Year' /><Value Type='Text'>" + Period + "</Value></Eq></Where></Query></View>"; 

年が列をインデックス化されています。where節を削除すると、作業が始まります。recursiveallwhere節で動作していないようです。

リストのしきい値の制限を変更したくありません。

+0

純粋なjavascriptソリューションが必要ですか?私はそれを投稿する必要がありますCSOMのC#のソリューションを持っている? –

+0

あなたが使用しているコードを共有できますか? –

答えて

1

リストのデフォルトのしきい値は5000です。このリストのしきい値を高くするには、SharePoint設定を変更する必要があります。現在使用しているSharePointのバージョンは不明ですが、Central Admin here is an article explaining how to change itにアクセスできるかどうかはわかりません。

SharePoint Onlineを使用している場合、私はあなたがつまずくかもしれないと思います。but one of these answers has a supposed work around for it

1

この問題を解決するには、ContentIteratorを使用する必要があります。基本的には、たとえば次のようなバッチでクエリを分割しています。 2000アイテム。 MicrosoftのWebサイトから:

SharePoint Serverが制限を絞るとSPQueryThrottleExceptionを受信リスト を押すことなく、大きなリストで5,000以上のアイテムにアクセス を支援するために、新しいAPI、ContentIteratorを提供します。 ContentIteratorは、一度に1つの項目を処理するためにクエリ をセグメント化するためのコールバックパターンを実装します。 スロットリング制限を超える可能性がある多数のアイテムを処理する必要がある場合は、この機能を使用することを検討してください。以下の簡単な例は、クエリから20,001 アイテムを返すリストでテストしたContentIteratorで使用される アプローチを示しています。

hereを参照してください。

exampleも役に立ちます。

関連する問題