2011-09-16 13 views
0

私の要件は、最初の25を除くすべてのSPListItemのバージョンを削除することです...したがって、私は26またはインデックス25から削除を開始する必要があります。ライブラリのSPListItemの1つは非常に多くのバージョン... Webインターフェイスがすべてのバージョンを表示できないことが100kを超えている可能性があります。データベースのサイズはほぼ900GBです。リストアイテムのバージョンを削除するより速い方法

私はこのコードを書いていますが、問題はitem.Versionsプロパティにあると思います。すべてのバージョンをメモリにロードしようとしました

foreach (SPListItem item in library.Items) 
{ 
    foundMoreVersionsThanRequired = false; 
    int tempVersionToKepp = howManyVersionsToKeep + 1; 

    for (int i = 0; i <= tempVersionToKepp; i++) 
    { 
    SPListItemVersion objVersion = null; 

    try 
    { 
     objVersion = item.Versions[i]; 
     if (objVersion != null && i == tempVersionToKepp) 
     { 
     foundMoreVersionsThanRequired = true; 
     break; 
     } 
    } 
    catch 
    { 
     foundMoreVersionsThanRequired = false; 
     break; 
    } 
    } 
    if (foundMoreVersionsThanRequired) 
    { 
    int tempIndex = howManyVersionsToKeep + 1;      
    SPListItemVersion objVersion = null; 
    do 
    { 
     try 
     { 
     objVersion = item.Versions[tempIndex]; 
     if (objVersion != null) 
     { 
      objVersion.Delete(); 
     } 
     else 
      break; 
     } 
     catch 
     { 
     break; 
     } 
    } while (true); 
    } 
    count++; 
} 

"item.Versions"プロパティの問題があると私は肯定的です。 item.Versionsを呼び出すと、メモリ内のすべてのオブジェクトが読み込まれ、多くの問題が発生しているようです。

SPListItemバージョンを直接削除する方法はありますか?

答えて

0

SharePoint内に25個のバージョンのみをWebから保持するようにリストを設定するだけではどうですか?

+0

はい、これは行われませんでした。今は古いバージョンを削除する必要があります。 25バージョンのみを保持するように値を設定しても、他のバージョンは削除されません。 – iJK

関連する問題