Usuwanie historii – sharepoint

Błąd w workflow plus włączona historia elementów na liście, może przyczynić się do bólu głowy administratora Sharepointa. Miałem napisany workflow w VS który zdarzenie edycji elementu sprawdzał czy status się zmienił na ten jeden konkretny. Jeżeli nie, ustaw wartość pola elementu i czekaj dalej. I tu następowała niekończąca się pętla. Skoro workflow zmieniał pole elementu listy to wyzwalał zdarzenie OnEditListItem które znowu zmieniało pole i znowu uruchamiało zdarzenie…

A jeszcze dodatkowo włączona historia wersji… przy około 65 tysięcznej wersji elementu, formularz już się nie uruchamia, a w logach pojawia się błąd z timeoutem do bazy.

Jak sobie poradzić w takiej sytuacji? Oto algorytm:

  1. Zatrzymać workflow
  2. Naprawić workflow
  3. Użyć powershella z poniższym kodem aby usunąć całą historię:
$web=Get-SPWeb http://MojSharepoint/MojaWitryna
$list = $web.Lists["mojaLista"]
$item = $list.GetItemById(23)
$item.Versions.DeleteAll()

W pierwszej linijce wpisujemy adres witryny, w drugiej – nazwę naszej listy, a w trzeciej id elementu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *