L'eliminazione di vecchie versioni in una raccolta documenti
Domanda
Ho una lista molto grande (~ 5000 documenti) che è stato chugging lungo per circa un anno. Ha avuto delle versioni acceso, con le versioni principali, mantenendo 2 vecchie versioni. Siamo totalmente ristrutturazione del Document Library (più su che in un'altra domanda) e mi piacerebbe semplicemente sbarazzarsi delle vecchie versioni su tutta la linea per ripulire la biblioteca e recuperare spazio.
Ho trasformato versioning fuori, ma le versioni non andare via, quando penso che dovrebbero. qualche idea? Una cosa che è importante da notare è che ho ereditato la raccolta documenti. E 'un po' strano in diversi modi e io non sono esattamente sicuro di come è stato creato.
Soluzione 4
Ora che sono più vecchio e un po 'teeny più saggia, mi avrebbe risolto questo scrivendo script lato client. Utilizzando SPServices , avrei potuto in loop attraverso tutti gli elementi della raccolta documenti e chiamato DeleteAllVersions per ciascuno. Questo è il modo in cui "nessun codice" per scrivere il codice per farlo.
Altri suggerimenti
Purtroppo non posso pensare ad un modo non-programmatico di fare questo, ho avuto un rapido sguardo a questo e ho creato un po 'di codice di esempio per scorrere e cancellare le versioni ad eccezione di quello più recente (questo si basa sull'ultima versione dell'essere pubblicato però):
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;
}
}
}
}
}
Tuttavia il codice viene eseguito attraverso bene, ma la versione non in realtà scompaiono correttamente, penso che si dovrà fare qualcosa con la raccolta SPFileVersion anche in quanto è una raccolta di documenti. Questo dovrebbe iniziare in ogni caso, fatemi sapere come si ottiene.
Saluti
Non è sicuro se c'è un modo per scrivere ai campi creati / CreatedBy che utilizzano i servizi web, ma si potrebbe scrivere un app di esportazione (sia per dati binari + metadati) che utilizza i servizi web e salva tutto alla vostra macchina locale . Anche scrivere un app di importazione che carica i file in una nuova DocLib (potrebbe caricare in cartelle separate, risolvendo il problema sollevato nella vostra altra questione) e ri-applica i metadati.
Se ad esempio si dispone di 100 versioni di un documento e quindi limitare il controllo delle versioni per ultimi 2 versioni, il precedente 98 non andrà via Tranne quando si inserisce una nuova versione.
Un modo semplice per ripulire queste vecchie versioni di ogni documento nella biblioteca è quello di esportare il contenuto del sito secondario (Stsadm opere d'esportazione il livello di sito di livello non biblioteca) con le versioni parametro = 1 per esportare solo l'ultima versione . È quindi possibile eliminare questo sito e importarlo indietro e quindi di sbarazzarsi di tutte le versioni precedenti. documentazione di esportazione stsadm può essere trovato qui ( http://technet.microsoft.com/en -us / library / cc262759.aspx )
Un'altra opzione (semplicemente una variante di cui sopra) è quello di utilizzare la procedura guidata di distribuzione del contenuto ( http: //spdeploymentwizard.codeplex .com / ), è necessario esportare la libreria doc, senza versioni, quindi eliminare esistente e importare nuovamente.