Wenn plötzlich das laden einer Website mit einem HTTP 200 – Connection Closed abbricht, staunt man erstmal nicht schlecht.
Ein Blick in die Zentraladministration – Inhaltsdatenbanken verrät, dass die Inhaltsdatenbank der betroffenen Sitecollection nicht aufgeführt wird und die SiteCollection, welche in der Datenbank liegt, “verwaist” ist und keiner WebApplication zugeordnet ist.
Der Versuch, die Inhaltsdatenbank einfach erneut zu mounten, schlägt mit dem Hinweis fehlt, dass die Inhaltsdatenbank bereits vorhanden ist.
Der Versuch, die Inhaltsdatenbank “sauber” zu dismounten, schlägt mit dem Hinweis, dass die Datenbank nicht gefunden werden kann, ebenso fehl!
Wie geht man vor, um das Problem zu lösen und die Site wieder erreichbar zu machen?
Es muss zunächst die Datenbank ID der Inhaltsdatenbank ermittelt werden.
In der VerwaltungsShell auf einem der SharePoint Server folgendes eingeben:
Get-SPDatabase | Where{$_.Exists -eq $true} > c:\db.txt
Die Datei “c:\db.txt” sichten und nach der Datenbank suchen.
ID notieren!
Hier fällt direkt auf, dass “WebApplication” leer ist! Und genau da liegt auch der Hund begraben.
Versuchen, ob sich das Objekt zur Datenbank über die ID instanzieren lässt:
$db = get-spcontentdatabase -Identity d0da21ca-8990-4623-8128-46da896ec137
$db
Dieses sollte der Fall sein.
Dann dismount über die ID durchführen!
dismount-spcontentdatabase -Identity d0da21ca-8990-4623-8128-46da896ec137 -confirm:$false
Dann Datenbank erneut, aber diesmal über den DisplayName, mounten und neue Datenbank ID erzwingen:
mount-spcontendatabase -Name SP-P_NGP_EIL -Webapplication https://deine-webappplikation.de -AssignNewDatabaseId
Anschliessend die Sitecollection in eine andere Datenbank verschieben:
move-spsite https://deine-webapplikation.de/pfad/site -DestinationDatabase IrgendeineDatenbankdergleichenWebApplication -confirm:$false
iisreset /noforce
Anschliessend ist die “alte” Inhaltsdatenbank über die Zentraladministration zu löschen:
Dann ist die Datenbank physikalische im Management Studio des SQL zu löschen:
Anschliessend eine neue Inhaltsdatenbank über die Verwaltungskonsole (powershell) auf einem der App Server neu erstellen. Diese hat idealerweise den gleichen Namen wie die alte Datenbank. Im Beispiel SP-P_NGP_EIL.
New-SPContentDatabase -Name SP-P_NGP_EIL -WebApplication https://deine-webapplikation.de -MaxSiteCount 1 -WarningSiteCount 0
Nun kann die Sitecollection zurück in die “richtige” Datenbank verschoben werden.
Move-SPSite -Identity https://deine-webapplikation.de/pfad/site -DestinationDatabase SP-P_NGP_EIL -Confirm:$false
iisreset /noforce
Der Reset ist auf ALLEN Farmnodes durchzuführen!
Anschliessend ist alles wieder beim Alten und die Site kann wieder geladen werden.
Um den Sachverhalt zu klären und die nötigen Maßnahmen in Erfahrung zu bringen hat mich rund 6 Stunden gekostet. Die eigentliche Behebung, falls es mal wieder auftreten sollte, nimmt dann nicht mehr als rund 20 Minuten in Anspruch. Je nach Performance der Farmumgebung und Datenbankinstanz.