Удаление старых версий в библиотеке документов
Вопрос
У меня есть очень большой список (~ 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 без версий, а затем удалить существующую и импортировать ее обратно.