<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>SharePoint</title><link>http://blogs.wankuma.com/iijimas/category/2112.aspx</link><description>SharePoint</description><managingEditor>IIJIMAS</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint]アイテム数が多数（約2100以上）あるリストのアイテムIDをすべて列挙しようとして・・・</title><link>http://blogs.wankuma.com/iijimas/archive/2009/03/18/169845.aspx</link><pubDate>Wed, 18 Mar 2009 11:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/03/18/169845.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/169845.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/03/18/169845.aspx#Feedback</comments><slash:comments>270</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/169845.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/169845.aspx</trackback:ping><description>&lt;P&gt;※注意：以下に書くことはまだ、&lt;A href="http://blogs.wankuma.com/iijimas/archive/2009/03/15/169711.aspx"&gt;[SharePoint]WSS3.0の累積的な更新・・・（KB961755）&lt;/A&gt;のパッチ未適用の環境でのことです。&lt;/P&gt;
&lt;P&gt;あるリストで同一フォルダにアイテムが約2100以上あると、SPList.Items(SPListItemCollection)のメンバ使用するだけでも例外になってしまう場合があります。→&lt;A href="http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx"&gt;[SharePoint]リストにアイテムが約2100件以上あると・・・(続き：再現)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;このとき通常のWeb画面でもアイテムの一覧画面で&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;!-- #RENDER FAILED --&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;と表示されてしまいます。(&lt;A title=http://support.microsoft.com/kb/958577/en href="http://support.microsoft.com/kb/958577/en"&gt;kb/958577/en&lt;/A&gt;,&lt;A title=http://support.microsoft.com/kb/958577/ href="http://kb/958577/"&gt;kb/958577/&lt;/A&gt;) 
&lt;P&gt;このときSPListItemCollectionのCountプロパティやforeachで暗黙的に使用されるGetEnumerator メソッドでも例外になってしまいます。 一度には取得・列挙できません。&lt;/P&gt;
&lt;P&gt;そこで、小分けに、IDの範囲を指定して分割して、たとえば100件以内ずつ複数回のクエリに分けて、取得してIDを表示する以下のサンプルプログラムを作成しました。&lt;/P&gt;
&lt;P&gt;下のPrintAllListItemIds1とPrintAllListItemIds2はどちらも指定したリスト（ドキュメントライブラリ）のすべてのアイテムのIDを出力して最後に合計件数を出力するメソッド（のはず）です。一見するとどちらも同じ結果が期待できそうです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx"&gt;[SharePoint]リストにアイテムが約2100件以上あると・・・(続き：再現)&lt;/A&gt;のときに作成した、直下のルートフォルダに4024件アイテムが登録されているドキュメントライブラリ（バージョン管理設定、下書きアイテムを表示できるユーザー = 「アイテムを編集できるユーザー 」）があるので、実際に実行してみました。&lt;/P&gt;
&lt;P&gt;PrintAllListItemIds1&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;#8230;　&amp;#8230;　&amp;#8230;&lt;BR&gt;Number of Items : 1022&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;PrintAllListItemIds2&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;#8230;　&amp;#8230;　&amp;#8230;&lt;BR&gt;Number of Items : 4023&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;PrintAllListItemIds1は何度やってもこうなってしまいます。これは明らかに誤った結果です。&lt;/P&gt;
&lt;P&gt;PrintAllListItemIds2も1件違いますが、これは別の問題です。別のユーザーがドキュメントライブラリにアップロードしたばかりでカスタムフィールドを編集していない、バージョン0.1のチェックアウトファイルと思われます。このようなドキュメントアイテムはItemsやクエリ結果に出現しません。&lt;/P&gt;
&lt;P&gt;どうやらSPWebオブジェクトをクエリの都度生成しなおさないと、クエリを使用するだけでオブジェクトが何かおかしくなってしまうようです。&lt;/P&gt;
&lt;P&gt;
&lt;HR&gt;
&lt;NOBR&gt;&lt;CODE&gt;
&lt;P&gt;using System;&lt;BR&gt;using Microsoft.SharePoint; &lt;/P&gt;
&lt;P&gt;namespace TestSPQuery&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const string QUERY_BY_ID_RANGE = @"&amp;lt;Where&amp;gt;&lt;BR&gt;&amp;lt;And&amp;gt;&lt;BR&gt;&amp;lt;Geq&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;FieldRef Name = ""ID""/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Value Type = ""Counter""&amp;gt;{0}&amp;lt;/Value&amp;gt;&lt;BR&gt;&amp;lt;/Geq&amp;gt;&lt;BR&gt;&amp;lt;Lt&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;FieldRef Name = ""ID""/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Value Type = ""Counter""&amp;gt;{1}&amp;lt;/Value&amp;gt;&lt;BR&gt;&amp;lt;/Lt&amp;gt;&lt;BR&gt;&amp;lt;/And&amp;gt;&lt;BR&gt;&amp;lt;/Where&amp;gt;"; 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int MaxItemID = 4500;//取得する最大IDの目安&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int DEFAULT_ID_RANGE = 100;//１回のクエリ対象にするIDの範囲&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// start&amp;lt;=ID&amp;lt;endというクエリ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string GetIDRangeQery(int start, int end)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return string.Format(QUERY_BY_ID_RANGE, start, end);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String scUrl = "(サイトコレクションURL)";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String siteName = "サイト名";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String listName = "リスト名";&lt;BR&gt;&lt;BR&gt;&lt;FONT size=4&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PrintAllListItemIds1(scUrl, siteName, listName, DEFAULT_ID_RANGE);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PrintAllListItemIds2(scUrl, siteName, listName, DEFAULT_ID_RANGE);&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 指定したリスト（ドキュメントライブラリ）のすべてのアイテムのID表示する。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="scUrl"&amp;gt;サイトコレクションURL&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="siteName"&amp;gt;サイト名&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="listName"&amp;gt;リスト名&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="rangesize"&amp;gt;１回のクエリ対象にするIDの範囲&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void PrintAllListItemIds1(String scUrl, String siteName, String listName, int rangesize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite site = new SPSite(scUrl))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.AllWebs[siteName])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists[listName];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("List Title :{0}, ItemCount: {1} ", list.Title, list.ItemCount);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int start = 0; start &amp;lt;= MaxItemID; start += rangesize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPQuery q = new SPQuery();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q.Query = GetIDRangeQery(start, start + rangesize);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(q.Query);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItemCollection itemColl = list.GetItems(q);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPListItem item in itemColl)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("No.:{0} ID: {1} ",count++, item.ID);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Number of Items : {0}",count-1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 指定したリスト（ドキュメントライブラリ）のすべてのアイテムのID表示する。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="scUrl"&amp;gt;サイトコレクションURL&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="siteName"&amp;gt;サイト名&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="listName"&amp;gt;リスト名&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="rangesize"&amp;gt;１回のクエリ対象にするIDの範囲&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void PrintAllListItemIds2(String scUrl, String siteName, String listName, int rangesize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite site = new SPSite(scUrl))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.AllWebs[siteName])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists[listName];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("List Title :{0}, ItemCount: {1} ", list.Title, list.ItemCount);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int start = 0; start &amp;lt;= MaxItemID; start += rangesize)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.AllWebs[siteName])//クエリの度にサイト(SPWebオブジェクト)を生成。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists[listName];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPQuery q = new SPQuery();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q.Query = GetIDRangeQery(start, start + rangesize);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(q.Query);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItemCollection itemColl = list.GetItems(q);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPListItem item in itemColl)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("No.:{0} ID: {1} ", count++, item.ID);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Number of Items : {0}", count - 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;/CODE&gt;&lt;/NOBR&gt;
&lt;P&gt;
&lt;HR&gt;&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/169845.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint]WSS3.0の累積的な更新・・・（KB961755）</title><link>http://blogs.wankuma.com/iijimas/archive/2009/03/15/169711.aspx</link><pubDate>Sun, 15 Mar 2009 11:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/03/15/169711.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/169711.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/03/15/169711.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/169711.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/169711.aspx</trackback:ping><description>&lt;p&gt;めもめも、ただのメモ。&lt;br&gt;WSS3.0の新しい、KBでてますね。kb961755。&lt;br&gt;Article ID: 961755 - Last Review: March 13, 2009 - Revision: 2.0&lt;br&gt;「&lt;a href="http://support.microsoft.com/kb/961755/en-us"&gt;Description of the Windows SharePoint Services 3.0 cumulative update package: February 24, 2009&lt;/a&gt;」&lt;br&gt;機械翻訳：「&lt;a href="http://support.microsoft.com/kb/961755/"&gt;Windows SharePoint Services 3.0 の累積的な更新プログラム パッケージについて: 2009、2 月 24日&lt;/a&gt;」 &lt;/p&gt; &lt;p&gt;これで、あの問題解決？ &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx"&gt;[SharePoint]リストにアイテムが約2100件以上あると・・・(続き：再現)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.wankuma.com/iijimas/archive/2009/02/17/168246.aspx"&gt;[SharePoint]リストにアイテムが約2100件以上あると・・・&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.wankuma.com/iijimas/archive/2009/02/11/167981.aspx"&gt;[SharePoint][ドキュメントライブラリ]SPWeb.GetSiteData(SPSiteDataQuery)使えないじゃん！&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;まだ、試せないのですが・・・&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/169711.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint]リストにアイテムが約2100件以上あると・・・(続き：再現)</title><link>http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx</link><pubDate>Fri, 27 Feb 2009 00:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/168893.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/02/27/168893.aspx#Feedback</comments><slash:comments>75</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/168893.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/168893.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl HREF="/iijimas/archive/2009/02/17/168246.aspx"&gt;[SharePoint]リストにアイテムが約2100件以上あると・・・&lt;/A&gt; の続きです。 
&lt;P&gt;「ドキュメント ライブラリ」の同じユーザが閲覧できるアイテムの数が1つのフォルダで約2100件超えている時にWeb画面で 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;!-- #RENDER FAILED --&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;と表示される件と、Microsoft.SharePoint名前空間のクラスを使用したプログラミングでの 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;System.Data.SqlClient.SqlException: 着信の表形式のデータ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが不適切です。この RPC 要求に指定されたパラメータが多すぎます。最大数は 2100 です。 &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;という例外が起こる件についてです。&lt;A href="http://support.microsoft.com/kb/958577/en"&gt;kb958577&lt;/A&gt;(&lt;A href="http://support.microsoft.com/kb/958577/ja"&gt;機械翻訳kb958577&lt;/A&gt;) 
&lt;P&gt;確実に再現できるC# コンソールアプリケーションのサンプルプログラムを作成してみました。MOSS2007 SP1(WSS3.0)のサーバーのローカルで実行します。 
&lt;P&gt;ファイルを大量にアップロードして、&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.splistitemcollection.count.aspx"&gt;SPListItemCollection.Count プロパティ&lt;/A&gt;を呼び出すだけです。 
&lt;P&gt;まずはSharePointサイトに新規にドキュメントライブラリを作成しておきます。 &lt;BR&gt;コンソールアプリケーションを作成して、参照設定でmicrosoft.sharepoint.dllを追加してcsファイル冒頭でusing Microsoft.SharePoint;を書いておきます。次のコードをプログラムの中に記述します。&lt;/P&gt;
&lt;HR&gt;
&lt;PRE&gt;/// &amp;lt;SUMMARY&amp;gt;&lt;BR&gt;/// 同じファイルをコピーしてドキュメントライブラリに&lt;BR&gt;/// &amp;lt;/SUMMARY&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="docLib"&amp;gt;ドキュメントライブラリ(SPDocumentLibraryオブジェクト)&amp;lt;/PARAM&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="filePath"&amp;gt;コピー元ファイルの絶対パス&amp;lt;/PARAM&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="loginName"&amp;gt;ドキュメント作成者、更新者とするユーザ&amp;lt;/PARAM&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="start"&amp;gt;連番開始番号&amp;lt;/PARAM&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="end"&amp;gt;連番終了番号&amp;lt;/PARAM&amp;gt;&lt;BR&gt;private static void UploadManyFiles(SPDocumentLibrary docLib, string  filePath, string loginName, int start, int end)
{
    SPWeb web = docLib.ParentWeb;
    SPFileCollection filecoll = web.Folders[docLib.Title].Files;
    string fileName = Path.GetFileNameWithoutExtension(filePath);
    string fileExt = Path.GetExtension(filePath);
    byte[] fileBytes = ReadAsBytes(filePath);

    SPUser user = web.EnsureUser(loginName);
    string url = "";
    SPFile file = null;
    for (int i = start; i &amp;lt;= end; i++)
    {
        url = string.Format("{0}/{1}{2:D4}{3}", filecoll.Folder.Url, fileName, i, fileExt);
        Console.WriteLine("{0} is uploaded by {1}.", url, user.LoginName);
        file = filecoll.Add(url, fileBytes, user, user, DateTime.Now, DateTime.Now);
        file.Item.BreakRoleInheritance(false);
        file.Item.SystemUpdate();
    }
}
/// &amp;lt;SUMMARY&amp;gt;&lt;BR&gt;/// ファイルをバイト列として読み込む&lt;BR&gt;/// &amp;lt;/SUMMARY&amp;gt;&lt;BR&gt;/// &amp;lt;PARAM name="filePath"&amp;gt;パス&amp;lt;/PARAM&amp;gt;&lt;BR&gt;/// &amp;lt;RETURNS&amp;gt;ファイルの中身のバイト列&amp;lt;/RETURNS&amp;gt;&lt;BR&gt;private static byte[] ReadAsBytes(string filePath)
{
    MemoryStream ms = new MemoryStream();
    byte[] buffer = new byte[1024];
    using (BinaryReader br = new BinaryReader(new FileStream(filePath, FileMode.Open)))
    {
        while (br.Read(buffer, 0, buffer.Length) &amp;gt; 0)
        {
            ms.Write(buffer, 0, buffer.Length);
        }
    }
    byte[] fileBytes = ms.ToArray();
    return fileBytes;
}
&lt;/PRE&gt;
&lt;HR&gt;

&lt;P&gt;Main()の中で以下の変数の宣言や代入して（省略）下のコードを書きます。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;docLib：そのSPDocumentLibraryオブジェクト。 SPListからasで取得するなど。 
&lt;LI&gt;filePath：適当なファイルの絶対パス。 
&lt;LI&gt;loginName：に投稿できる権限を持つユーザのログイン名。 &lt;/LI&gt;&lt;/UL&gt;
&lt;HR&gt;
&lt;PRE&gt;・・・
//ドキュメント ライブラリのバージョン設定
//「このドキュメント ライブラリのファイルを編集するたびにバージョンを作成する 」で
//「   メジャーとマイナー (下書き) バージョンを作成する」を選択するのと同様。
docLib.EnableVersioning = true;
docLib.EnableMinorVersions = true;
//            docLib.DraftVersionVisibility = DraftVisibilityType.Reader;//（※1）
docLib.Update();

Console.WriteLine("EnableVersioning = {0}", docLib.EnableVersioning);
Console.WriteLine("EnableMinorVersions = {0}", docLib.EnableMinorVersions);
Console.WriteLine("DraftVersionVisibility = {0}", docLib.DraftVersionVisibility);
UploadManyFiles(docLib,filePath, loginName, 0, 2110);

//「この ドキュメント ライブラリ の下書きアイテムを表示できるユーザー」を 「アイテムを編集できるユーザー」にするのと同じ
docLib.DraftVersionVisibility = DraftVisibilityType.Author;//（※2）
docLib.Update();//（※2）
Console.WriteLine("DraftVersionVisibility = {0}", docLib.DraftVersionVisibility);
Console.WriteLine("list.Items.Count = {0}", docLib.Items.Count);//←ここで上記の例外が発生します！！！
&lt;/PRE&gt;
&lt;HR&gt;

&lt;P&gt;ちなみに、（※1）の行をコメント解除して、（※2）の行をコメント化すると例外は発生しません。&lt;/P&gt;
&lt;P&gt;Webでの設定画面でも「ドキュメント ライブラリ」＞「バージョン設定」 ＞「下書きアイテムのセキュリティ」＞「この ドキュメント ライブラリ の下書きアイテムを表示できるユーザー」 のラジオボタンの選択によって、以下のように起きない場合もあります。&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 width=681 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=423&gt;アイテムを閲覧できるすべてのユーザー&lt;/TD&gt;
&lt;TD vAlign=top width=256&gt;この例外が発生しない。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=423&gt;アイテムを編集できるユーザー&lt;/TD&gt;
&lt;TD vAlign=top width=256&gt;この例外が発生する。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=423&gt;アイテムの作成者およびアイテムを承認できるユーザー&lt;BR&gt;「コンテンツの承認を必須にする」が「はい」のとき&lt;/TD&gt;
&lt;TD vAlign=top width=256&gt;この例外が発生する。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/168893.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint]リストにアイテムが約2100件以上あると・・・</title><link>http://blogs.wankuma.com/iijimas/archive/2009/02/17/168246.aspx</link><pubDate>Tue, 17 Feb 2009 02:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/02/17/168246.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/168246.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/02/17/168246.aspx#Feedback</comments><slash:comments>109</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/168246.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/168246.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/iijimas/archive/2009/02/11/167981.aspx"&gt;[SharePoint][ドキュメントライブラリ]SPWeb.GetSiteData(SPSiteDataQuery)使えないじゃん！&lt;/A&gt;&lt;BR&gt;のエントリの続きです。&lt;/P&gt;
&lt;P&gt;残念ながら、&lt;FONT size=5&gt;SPList.GetItems(SPQuery)メソッドでも&lt;/FONT&gt;マッチするアイテム数が約2100件越えると&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;System.Data.SqlClient.SqlException: 着信の表形式のデータ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが不適切です。この RPC 要求に指定されたパラメータが多すぎます。最大数は 2100 です。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;という&lt;FONT size=5&gt;例外が起きました！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;そればかりか通常の&lt;FONT size=5&gt;WebのUI画面&lt;/FONT&gt;においても・・・&lt;BR&gt;リスト（同一フォルダ内）にアクセス権のあるアイテムが&lt;FONT size=5&gt;&lt;STRONG&gt;約2100件以上&lt;/STRONG&gt;&lt;/FONT&gt;ある時にアクセス権を持っているユーザでその一覧を表示しようとすると・・・&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;!-- #RENDER FAILED --&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;のように表示され、一覧が出てこないことがあります。&lt;/P&gt;
&lt;P&gt;これに関してのMSサポートオンラインのKBがあります。&lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/958577/en"&gt;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: &amp;#8221;#RENDER FAILED&amp;#8221;&lt;/A&gt;&lt;BR&gt;（機械翻訳：&lt;A href="http://support.microsoft.com/kb/958577/ja"&gt;継承している以外のアクセス許可を持つ 2,000 以上のリスト アイテムを含む Windows SharePoint Services 3.0 のリストをサブフォルダにアクセスすると、エラー メッセージ:&amp;#8221;#RENDER に失敗しました&amp;#8221;&lt;/A&gt;）&lt;/P&gt;
&lt;P&gt;WSS3.0のバグということですね。&lt;/P&gt;
&lt;P&gt;修正プログラム（&lt;A href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=957691&amp;amp;kbln=ja"&gt;kb957691&lt;/A&gt;）&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/957691/"&gt;957691&lt;/A&gt; (http://support.microsoft.com/kb/957691/ ) Description of the Windows SharePoint Services 3.0 hotfix package (Sts.msp): October 28, 2008&lt;BR&gt;（&lt;A href="http://support.microsoft.com/kb/957691/"&gt;957691&lt;/A&gt; (http://support.microsoft.com/kb/957691/ ) Windows SharePoint Services 3.0 修正プログラム パッケージ (Sts.msp): 2008 年 10 月 28 日）&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;がでているのですね。ところそのリンクの下に&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Note&lt;/B&gt; 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.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;注意してください。 &lt;/B&gt;この修正プログラムを適用した後も、「現象」に記載されているエラー メッセージが表示されます可能性があります。 考えられますが長すぎると多数のクエリによって継承以外のアクセス許可。 継承している以外の数を減らすにあるこの場合、アクセス許可。 一覧で 5,000 またはより以外の継承アクセス許可を使用する場合この問題が発生する可能性があります。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;とあります。&lt;/P&gt;
&lt;P&gt;すなわち、KB957691の修正プログラムあててもアイテム数の上限が&lt;FONT size=5&gt;2000件から5000件&lt;/FONT&gt;になるだけ！？&lt;/P&gt;
&lt;P&gt;CAMLクエリを使用するAPIを使わないで、&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.splistitemcollection.aspx"&gt;SPListItemCollection&lt;/A&gt;と&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.splistitem.aspx"&gt;SPListItem&lt;/A&gt;を使用するべたなループで条件判断して該当アイテムを取得するか、クエリのWhere句を2000件超えないように調節して複数回実行するぐらいかしかないのでしょうか。それとも別の方法があるのでしょうか？&lt;/P&gt;
&lt;P&gt;以下2/17追記：&lt;BR&gt;残念ながら、アイテム数が&lt;STRONG&gt;約2100件超えている場合&lt;/STRONG&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.splistitemcollection.aspx"&gt;&lt;FONT size=5&gt;SPListItemCollection&lt;/FONT&gt;&lt;/A&gt;のメソッドやメンバも同様の例外になります。&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.splistitemcollection.count.aspx"&gt;&lt;FONT size=5&gt;SPListItemCollection.Count プロパティ&lt;/FONT&gt;&lt;/A&gt;でさえも同様の例外となってしまいます！&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/168246.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint][ドキュメントライブラリ]SPWeb.GetSiteData(SPSiteDataQuery)使えないじゃん！</title><link>http://blogs.wankuma.com/iijimas/archive/2009/02/11/167981.aspx</link><pubDate>Wed, 11 Feb 2009 23:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/02/11/167981.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/167981.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/02/11/167981.aspx#Feedback</comments><slash:comments>358</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/167981.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/167981.aspx</trackback:ping><description>&lt;P&gt;ドキュメントライブラリにドキュメントが&lt;STRONG&gt;2000件&lt;/STRONG&gt;以上ある時に、&lt;A href="http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spweb.getsitedata.aspx"&gt;SPWeb.GetSiteData(SPSiteDataQuery)メソッド&lt;/A&gt;を実行しました。GetSiteData()は複数のリストから同時に条件を満たすアイテムのデータを取得できるメソッドです。&lt;/P&gt;
&lt;P&gt;SqlExceptionが起きました。&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;System.Data.SqlClient.SqlException: 着信の表形式のデータ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが不適切です。この RPC 要求に指定されたパラメータが多すぎます。最大数は 2100 です。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;1900件ぐらいだと問題なかったのに・・・orz 
&lt;P&gt;結局、GetSiteData()はあきらめて、リスト個別に&lt;A href="http://msdn.microsoft.com/ja-jp/library/ms457534.aspx"&gt;SPList.GetItems(SPQuery)メソッド&lt;/A&gt;を使うことにしました。 
&lt;P&gt;&lt;FONT size=5&gt;SPWeb.GetSiteData(SPSiteDataQuery)使えないじゃん！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=5&gt;以下2009/2/16追記：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=5&gt;SPList.GetItems(SPQuery)メソッドでもマッチするアイテム数が約2100件越えると同様なエラーになります。&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT size=5&gt;通常のWeb画面でもアイテム数が約2100件超えると 
&lt;BLOCKQUOTE&gt;&lt;FONT size=3&gt;&amp;lt;!-- #RENDER FAILED --&amp;gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=5&gt;と表示されます。。。（次のエントリに書く予定）&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/167981.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>IIJIMAS</dc:creator><title>[SharePoint][ドキュメントライブラリ]複数行テキストフィールド内の改行で・・・</title><link>http://blogs.wankuma.com/iijimas/archive/2009/02/10/167939.aspx</link><pubDate>Tue, 10 Feb 2009 23:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/iijimas/archive/2009/02/10/167939.aspx</guid><wfw:comment>http://blogs.wankuma.com/iijimas/comments/167939.aspx</wfw:comment><comments>http://blogs.wankuma.com/iijimas/archive/2009/02/10/167939.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/iijimas/comments/commentRss/167939.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/iijimas/services/trackbacks/167939.aspx</trackback:ping><description>&lt;p&gt;SharePointで遭遇した不可思議な現象です。 &lt;p&gt;ドキュメントライブラリで複数行テキストカスタムフィールドがあるとします。 &lt;ol&gt; &lt;li&gt;このライブラリにWebの画面を使って&lt;strong&gt;Office2003ドキュメント(doc,xls,ppt)&lt;/strong&gt;と&lt;strong&gt;Office2007ドキュメント(docx,xlsx,pptx)&lt;/strong&gt;をアップロードします。  &lt;li&gt;そして、編集画面で複数行テキストフィールドに同じ複数行テキストを設定します。  &lt;li&gt;プログラムから、このフィールドの文字列を取得します。 &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;すると、あら不思議！ &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Office2003ドキュメント&lt;/strong&gt;のフィールドの中の文字列は&lt;strong&gt;&lt;font size="5"&gt;「\r\n」&lt;/font&gt;(Carriage Return + Line Feed)&lt;/strong&gt;  &lt;li&gt;&lt;strong&gt;Office2007ドキュメント&lt;/strong&gt;のフィールドの中の文字列は&lt;strong&gt;&lt;font size="5"&gt;「\n」&lt;/font&gt;(Line Feed)&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;になっています！ &lt;p&gt;&lt;font size="5"&gt;一体どうなってるのでしょうか？&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/iijimas/aggbug/167939.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>