ドキュメントライブラリで古いバージョンを削除します
質問
私は約1年間並んでいる非常に大きなリスト(〜5000文書)を持っています。主要なバージョンを使用して、2つの古いバージョンを保持してバージョン化がオンになっています。ドキュメントライブラリを完全に再構築します(詳細については、別の質問で詳しく説明しています)。ライブラリをクリーンアップしてスペースを取り戻すために、全面的な古いバージョンを削除したいだけです。
バージョンをオフにしましたが、バージョンは消えなくなりました。何かご意見は?注意することが重要なことの1つは、ドキュメントライブラリを継承したことです。いくつかの点で少し奇妙であり、それがどのように作成されたかは正確にはわかりません。
解決 4
私は年をとっていて、少し賢いので、クライアント側のスクリプトを書くことでこれを解決していたでしょう。使用 spservices, 、ドキュメントライブラリのすべてのアイテムをループして電話をかけることができました deleteallversions それぞれのため。それは、それを行うためにコードを書くための「コードなし」の方法です。
他のヒント
残念ながら、私はこれを行うプログラム以外の方法を考えることができません。これを簡単に見て、最新のものを除いてバージョンをループして削除するためのサンプルコードを作成しました(ただし、これは公開されている最新バージョンに依存しています) :
using (SPSite site = new SPSite("http://yourserver/sites/site"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Test Doc Library"];
foreach (SPListItem item in list.Items)
{
SPListItemVersionCollection versionCol = item.Versions;
int count = versionCol.Count;
int j = 0;
for (int i = 1; i < count; i++)
{
if (versionCol[i].VersionId != versionCol[j].VersionId)
{
SPListItemVersion version = versionCol[i];
version.Delete();
count = item.Versions.Count;
}
}
}
}
}
ただし、コードは正常に実行されますが、バージョンは実際には適切に消えません。ドキュメントライブラリであるため、Spfileversionコレクションで何かをしなければならないと思います。これはとにかくあなたを始めてください、あなたがどのように乗るかを教えてください。
乾杯
Webサービスを使用して作成/作成されたフィールドに書き込む方法があるかどうかはわかりませんが、Webサービスを使用してすべてをローカルマシンに保存するエクスポートアプリ(両方のバイナリデータ +メタデータ)を作成できます。また、ファイルを新しいdoclibにアップロードするインポートアプリ(別のフォルダーにアップロードし、他の質問で提起された問題を解決することができます)を書き込み、メタデータを再適用します。
たとえば、ドキュメントの100バージョンがある場合、バージョンを最後の2つのバージョンに制限する場合、新しいバージョンを挿入する場合を除き、前の98は消えません。
ライブラリ内の各ドキュメントのこれらの古いバージョンをクリーンアップする簡単な方法は、バージョンパラメーター= 1を使用して、サブサイトのコンテンツ(STSADMエクスポートワークスではなく、ライブラリレベルではなくサイトレベルでのSTSADMエクスポートワーク)をエクスポートすることです。その後、このサイトを削除してインポートして、以前のすべてのバージョンを取り除くことができます。 STSADMエクスポートドキュメントはここにあります(http://technet.microsoft.com/en-us/library/cc262759.aspx )
別のオプション(単に上記のバリエーション)は、コンテンツ展開ウィザードを使用することです(http://spdeploymentwizard.codeplex.com/ )、バージョンなしでドキュメントライブラリをエクスポートしてから、既存の削除を削除してインポートする必要があります。