IIJIMASが勉強しようとしています。

これからこれから♪

目次

Blog 利用状況

ニュース

わんくま同盟 東京勉強会 #45 数学デー 私の資料(pptxとxlsx)

確率の不思議

わんくま同盟 東京勉強会 #37 私のLT資料

数の冪の和の式 を求めてみよう!

デブサミ09でわんくま同盟の紹介をしたスライド

わんくま同盟 東京勉強会 #26 LT祭りの私のスライド

わんくま同盟 東京勉強会 #23の私のスライド

わんくま同盟 東京勉強会 #18の私のスライド


自己紹介(仮)

IIJIMASと申します。 東京都多摩市在住です。多摩川のそばです。 まだ20代…
10代…でした0x1Fです
昔、家に猫がいました。猫好きです。
ブログは苦手(?)
IIJIMASのSは何って言われます。 IIJIMASって
なんて読むかは自由です。
魚や網間企業とゲームとは無関係です。
数学とか宇宙とかの読み物とか好きです。
血液型:果汁100%A
メタボ予備軍。。。orz
Twitter

...............
MVP 審査応募ページ~ 求む、日本のMVP。
MCTS:.NET Framework 2.0: Windows アプリケーション
MCTS:.NET Framework 2.0: Windows アプリケーション

MCSD.NET:マイクロソフト認定ソリューションデベロッパー(MCSD) Microsoft .NET トラック
Microsoft Certified Solution Developer for Microsoft.NET

リンク

わんくま同盟
わんくま同盟

C#VB.NET掲示板
C#VB.NET掲示板

わんくま同盟 Blog's

ちょっと一言(仮)


書庫

日記カテゴリ

2009年2月17日 #

[SharePoint]リストにアイテムが約2100件以上あると・・・

[SharePoint][ドキュメントライブラリ]SPWeb.GetSiteData(SPSiteDataQuery)使えないじゃん!
のエントリの続きです。

残念ながら、SPList.GetItems(SPQuery)メソッドでもマッチするアイテム数が約2100件越えると

System.Data.SqlClient.SqlException: 着信の表形式のデータ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが不適切です。この RPC 要求に指定されたパラメータが多すぎます。最大数は 2100 です。

という例外が起きました!

そればかりか通常のWebのUI画面においても・・・
リスト(同一フォルダ内)にアクセス権のあるアイテムが約2100件以上ある時にアクセス権を持っているユーザでその一覧を表示しようとすると・・・

<!-- #RENDER FAILED -->

のように表示され、一覧が出てこないことがあります。

これに関してのMSサポートオンラインのKBがあります。
Error message when you visit a sub-folder under a Windows SharePoint Services 3.0 list that contains more than 2,000 list items that have non-inheriting permissions: ”#RENDER FAILED”
(機械翻訳:継承している以外のアクセス許可を持つ 2,000 以上のリスト アイテムを含む Windows SharePoint Services 3.0 のリストをサブフォルダにアクセスすると、エラー メッセージ:”#RENDER に失敗しました”

WSS3.0のバグということですね。

修正プログラム(kb957691

957691 (http://support.microsoft.com/kb/957691/ ) Description of the Windows SharePoint Services 3.0 hotfix package (Sts.msp): October 28, 2008
957691 (http://support.microsoft.com/kb/957691/ ) Windows SharePoint Services 3.0 修正プログラム パッケージ (Sts.msp): 2008 年 10 月 28 日)

がでているのですね。ところそのリンクの下に

Note After you apply this hotfix, you may still receive the error message that is mentioned in the "Symptoms" section. This may be caused by a query that is too long and that has a large number of non-inheriting permissions. In this case, you have to reduce the number of non-inheriting permissions. If you use 5,000 or more non-inheriting permissions in the list, you may encounter this problem.

注意してください。 この修正プログラムを適用した後も、「現象」に記載されているエラー メッセージが表示されます可能性があります。 考えられますが長すぎると多数のクエリによって継承以外のアクセス許可。 継承している以外の数を減らすにあるこの場合、アクセス許可。 一覧で 5,000 またはより以外の継承アクセス許可を使用する場合この問題が発生する可能性があります。

とあります。

すなわち、KB957691の修正プログラムあててもアイテム数の上限が2000件から5000件になるだけ!?

CAMLクエリを使用するAPIを使わないで、SPListItemCollectionSPListItemを使用するべたなループで条件判断して該当アイテムを取得するか、クエリのWhere句を2000件超えないように調節して複数回実行するぐらいかしかないのでしょうか。それとも別の方法があるのでしょうか?

以下2/17追記:
残念ながら、アイテム数が約2100件超えている場合SPListItemCollectionのメソッドやメンバも同様の例外になります。SPListItemCollection.Count プロパティでさえも同様の例外となってしまいます!

posted @ 2:30 | Feedback (3)