SPQueryはリストビューのしきい値の下のライブラリに機能しますが、終了しません
-
10-12-2019 - |
質問
SO現在のWebのすべてのDOCLIBを列挙して、チェックアウトされたファイルをすべて掴んでテーブル内のリストを表示し、ユーザーがいくつかの必要なメタデータを適用し、一度に多くの場合(50)。
このWebPartは、リストビューのしきい値(現在は15,000で設定されている)、および非常に大きいサイト(50,000~100,000以上のドキュメント)上でリストを操作する必要があります。
ここで大規模なリストを処理するためのMSベストプラクティスをフォローしています。 http: //msdn.microsoft.com/en-us/library/ee557257.aspx
(CAMLがまったく定義されていない)、2,000項目のページを取得してその方法を解析します。これに関する問題は、実際にWebPartが実際にそれらの非常に大きい(50k +)サイトでタイムアウトを発生させていることです。だから私は私のCAMLと少し賢くなっていることを試みて、チェックアウトされているアイテムのみを引いてください:
spQuery.Query = "<Where><IsNotNull>
<FieldRef Name=\"CheckoutUser\" LookupId=\"TRUE\"/>
</IsNotNull></Where>";
spQuery.RowLimit = 2000;
spQuery.ViewAttributes = "Scope=\"Recursive\"";
.
これと同じCAMLを使用してWeb全体を照会するためにCrossListQueryInfo
クエリを使用しています。 1つがある場合は、その例外をキャッチして、各個々のライブラリの「遅い」SPQueryで再試行してください。
私が読んでいるすべてのものから、私のCamlがLVTよりも少ないアイテムを返している限り、それはうまくいくべきです。しかし、上のCAMLを使用すると、The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator
が呼び出されたときにエラーSPList.GetItems(spQuery)
がスローされます。私は2,000の行を設定しているので、それは決して起こらないではありませんか? MSは、まったく定義されていないCAMLを使用してSPQueryを実行することを提案します - 基本的にライブラリから2,000のページですべての項目をつかみます。だから私は私のCAMLがビューしきい値を覆ってリストでのみ失敗している理由を理解することはできません。
編集:さらなる研究の際に、私はContentIterator
クラスを私のニーズに応えることを試みています( http://msdn.microsoft.com/en-us/library/microsoft.office.server.utilities.ContentIterator.aspx )この投稿からの例を使用して: http:// recthive- sharepoint.com/2012/07/17/data-access-via-caml-queries/
私はまだ同じLVTエラーを持つContentIteratorで失敗しています。
解決
リストビューのしきい値が機能している方法についての私の理解は、私はあなたのCAMLクエリが失敗している理由が疑われる理由は、インデックスが非インデックスフィールドでフィルタリングされているため、RowLimitが "After"に適用されます。
チェックアウトャのフィールドの索引付けはあなたの問題を解決するだろうと思いますが、それはあなたがたくさんのサイトを持っているように聞こえます。
代替アプローチページングを提案できるようにします。すべてのリストのID列は索引付けされているので、ID列の最初の(非常に重要)、つまり2000、およびCheckoutUserフィールドに最初にフィルタリングしているCAMLクエリを実装します。そのクエリが希望の数の結果を返さない場合は、2000から4000を増やし、繰り返します。
私はこの解決策を自分で実装していない、それはただの考えです。
他のヒント
大規模なリストを照会している場合は、照会しているフィールドに間違いなく索引付けする必要があります。インデックス付きフィールドはデータベース内の別のテーブルに格納されているため、スロットルは発生しません。
私のこのブログの投稿は私が考えるのに役立つものであるべきです: > http://vrdmn.blogspot.in/2012/11/sharepoint-list-indexes-eromesthood.html