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バージョンを直接削除する方法はありますか?
はい、これは行われませんでした。今は古いバージョンを削除する必要があります。 25バージョンのみを保持するように値を設定しても、他のバージョンは削除されません。 – iJK