SharePoint Seiteninhalte verschwunden

SharePoint Seiteninhalte verschwunden

Es kommt immer mal wieder vor, dass nach der Installation eines CUs SharePoint Seiteninhalte verschwunden sind. Es wird dann nur noch etwas in dieser Art true;false;1 oder false;false;1 angezeigt. Wobei die Zahl immer für die Anzahl der Spalten des Page Layouts angibt.

Im Internet findet man verschiedene Lösungsmöglichkeiten zum Problem, dass SharePoint Seiteninhalte verschwunden sind. Die wohl unproblematischste Möglichkeit ist es, die betroffene Seite auszuchecken und dann wieder zu verwerfen. Dabei ist zu beachten, dass keine Änderungen an der Seite vorgenommen und gespeichert werden, sondern wirklich nur der Check-Out ausgeführt wird und dann direkt wieder verworfen wird. Durch dieses Vorgehen wird der Inhalt in der SharePoint Inhaltsdatenbank auf den ursprünglichen Inhalt korrigiert.

Wie kann man aber sicherstellen, dass nicht weitere SharePoint Seiteninhalte verschwunden sind und bisher einfach nicht bemerkt wurden? Dies kann man recht einfach über ein SQL-Query herausfinden. Allerdings sollte man diesen Query nicht auf der produktiven Inhaltsdatenbank ausführen, sondern vorher eine Kopie erstellen und dort den Query ausführen.

Der SQL-Query für die SharePoint Inhaltsdatenbank sieht folgendermaßen aus:

select * from(
SELECT *
,CONVERT(nvarchar(MAX), [tp_ColumnSet]) as [tp_ColumnSetTmp]
FROM [AllUserData]) tmp
where tp_columnsettmp like '%false,false,%' and tp_columnsettmp not like '%">false,false,%' or
(tp_columnsettmp like '%true,false,%' and tp_columnsettmp not like '%">true,false,%') or
(tp_columnsettmp like '%true,true,%' and tp_columnsettmp not like '%">true,true,%');

Die where Klausel muss gegebenenfalls noch angepasst werden, wenn ein anderes Page Layout zum Einsatz kommt. Das Prinzip sollte durch das Beispiel allerdings klar werden.

Mit dem Ergebnis (tp_ListId) können nun per PowerShell die betroffenen Seiten ausfindig gemacht werden:

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$listIds = "911C4B39-FA15-47FA-92F8-4255F8716435", "EA417CB3-6AE0-411B-9D81-D6AEB6D58E55", "4E2C73A0-695B-4613-A151-F0C70AB42B8E"

$sites = Get-SPSite -Limit All

foreach ($s in $sites)
{ 
  $webs = Get-SPWeb -Limit All -Site $s
  foreach ($w in $webs)
  {
    $lists = $w.Lists
    foreach ($l in $lists)
    {
      if ($listIds -contains $l.id)
      {
        $l.Id
        Write-Host -ForegroundColor Yellow $l.ParentWebUrl
        Write-Host
      }
    }
  }
}

Nun können die betroffenen Seiten mit dem bereits beschriebenen Verfahren wieder mit dem ursprünglichen und korrekten Inhalt gefüllt werden.

In diesem Sinne,

Happy SharePointing…

2 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert