Pregunta

Tengo una lista muy grande (~ 5000 documentos) que ha sido avanzaba a alrededor de un año. Ha tenido el control de versiones se activa, con versiones principales, dejando 2 versiones antiguas. Estamos reestructurar totalmente la biblioteca de documentos (más sobre esto en otra pregunta) y me gustaría simplemente deshacerse de las viejas versiones en todos los ámbitos para limpiar la biblioteca y recuperar el espacio.

Me he convertido de versiones fuera, pero las versiones no desaparecen, cuando yo creo que deberían. ¿Alguna idea? Una cosa que es importante tener en cuenta es que he heredado la biblioteca de documentos. Es un poco extraño de varias maneras y no estoy muy seguro de cómo se creó.

¿Fue útil?

Solución 4

Ahora que soy más viejo y más sabio un poco de pequeñísima, que habría resuelto esto escribiendo script del lado del cliente. Utilizando SPServices , que podría haber en bucle a través de todos los elementos de la biblioteca de documentos y la llamada DeleteAllVersions para cada uno. Esa es la forma "sin código" para escribir el código para hacerlo.

Otros consejos

Por desgracia no puedo pensar en una manera no-programática de hacer esto, tuve un rápido vistazo a este y han creado un código de ejemplo para recorrer y borrar las versiones excepto para el último de ellos (esto se basa en la última versión bienestar publicado aunque):

 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;
                        }
                    }
                }



            }
        }

Sin embargo, las carreras de código a través de bien, pero la versión en realidad no desaparecen correctamente, creo que tendrá que hacer algo con la colección SPFileVersion también, ya que es una biblioteca de documentos. Esto debe empezar en cualquier caso, quiero saber cómo le va.

Saludos

No estoy seguro si hay una manera de escribir en los campos creados / CreatedBy utilizando los servicios web, pero se podría escribir una aplicación de exportación (tanto para datos binarios + metadatos) que utiliza los servicios web y guarda todo en el equipo local . También escribir una aplicación de importación que carga los archivos en una nueva DocLib (podría cargar en carpetas separadas, la solución de la cuestión planteada en su otra pregunta) y re-aplica los metadatos.

Por ejemplo, si usted tiene 100 versiones de un documento y luego restringir el control de versiones a 2 últimas versiones, el anterior 98 no irá lejos Excepto cuando se inserta una nueva versión.

Una forma sencilla de limpiar estas versiones antiguas de cada documento en la biblioteca es exportar el contenido del subsitio (obras exportación de Stsadm en el nivel de sitio de nivel no biblioteca) con las versiones parámetro = 1 sólo para exportar la última versión . A continuación, puede eliminar este sitio y importarlo de nuevo y así deshacerse de todas las versiones anteriores. documentación de exportación stsadm se puede encontrar aquí ( http://technet.microsoft.com/en -US / library / cc262759.aspx )

Otra opción (simplemente una variación de la anterior) es utilizar el asistente de distribución de contenido ( http: //spdeploymentwizard.codeplex .com / ), tendrá que exportar la biblioteca doc sin versiones, a continuación, eliminar existente y la importación de nuevo.

Licenciado bajo: CC-BY-SA con atribución
scroll top