Удаление старых версий в библиотеке документов

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/445

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть очень большой список (~ 5000 документов), который пробирался около года. Он включил версию, с основными версиями, сохраняя 2 старых версии. Мы полностью реструктурируем библиотеку документов (подробнее об этом в другом вопросе), и я хотел бы просто избавиться от старых версий по всему совету, чтобы очистить библиотеку и восстановить пространство.

Я выключил версию, но версии не уходят, когда я думаю, что они должны. Какие-нибудь мысли? Важно отметить, что я унаследовал библиотеку документов. Это немного странно в нескольких способах, и я не совсем уверен, как это было создано.

Это было полезно?

Решение 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, так как это библиотека документов. Это должно заставить вас начать все равно, дайте мне знать, как вы поживаете.

Ваше здоровье

Не уверен, есть ли способ написать в созданные/созданные поля с использованием веб -сервисов, но вы можете написать приложение для экспорта (как для двоичных данных + метаданные), которое использует веб -сервисы и сохраняет все на вашей локальной машине. Также напишите приложение для импорта, которое загружает файлы в новый Doclib (может загружать в отдельные папки, решая проблему, поднятую в вашем другом вопросе) и повторно примените метаданные.

Если, например, у вас есть 100 версий документа, а затем ограничивает использование версий до 2 версий, предыдущие 98 не уйдут, за исключением случаев, когда вы вставляете новую версию.

Простой способ очистить эти старые версии каждого документа в библиотеке - экспортировать содержимое добычи (экспорт STSADM работает на уровне сайта, а не на уровне библиотеки) с параметрами версий = 1, чтобы экспортировать только последнюю версию. Затем вы можете удалить этот сайт и импортировать его обратно и, таким образом, избавиться от всех более ранних версий. Экспортная документация STSADM можно найти здесь (http://technet.microsoft.com/en-us/library/cc262759.aspx )

Другой вариант (просто вариант вышеизложенного) - использовать мастер развертывания контента (http://spdeploymentwizard.codeplex.com/ ) вам нужно будет экспортировать библиотеку DOC без версий, а затем удалить существующую и импортировать ее обратно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top