In meinem letzten Beitrag hatten wir den neuen SharePoint Server soweit vorbereitet, dass die Website-Hierarchie identisch mit dem alten SharePoint Server ist. Dies bedeutet, dass alle Root-Sites und die dazugehörigen Sub-Sites identisch auf dem Migrationsserver als Grundlage für diesen Artikel vorhanden sind. Solltet Ihr den vorherigen Artikel noch nicht gelesen haben, dann holt dies unbedingt nach.
Im ersten Schritt werden wir in diesem Blog-Beitrag den SQL RSB (Remote Blob Storage) auflösen. Hierbei wird im ersten Schritt die bestehende RSB Verbindung zwischen dem SharePoint Server und dem SQL Server aufgehoben und dann im zweiten Schritt die sich auf dem File-Storage befindlichen Dateien wieder zurück in die Datenbank geschrieben.
Achtung: Bevor Sie die hier beschriebenen Arbeiten ausführen, vergewissern Sie sich, dass Sie über ausreichend Sicherungen verfügen. Sollte Ihre SharePoint Umgebung virtualisiert sein, so empfehle ich zzgl. noch einen Snap-Short von allen Servern zu machen.
RBS deaktivieren und die Dateien migrieren
Kontrollieren wir als Erstes wie viele Dateien im Moment in der Datenbank auf Dateien in dem File-Storage verweisen. Melden Sie sich hierzu auf dem aktuellen SQL-Server an. Öffnen Sie das SQL Management-Studio (SMMS) und melden Sie sich an der SQL-Instanz an in der die SharePoint Datenbanken existieren. Öffnen Sie eine neue Abfrage. Geben Sie den folgenden Befehl ein.
USE WSS_CONTENT_INTRANET
SELECT COUNT (*) from DocStreams where RbsID is not null
Hinweis: In einigen Dokumenten im Internet wird auf das alte Datenbankschema verwiesen, damals hieß die Tabelle „AllDocStreams“. Diese wurde geändert in DocStreams.
Wie Sie erkennen können, existieren in meiner „WSS-Content_Intranet“ Datenbank vor der Migration genau 78.814 Verweise auf Dateien in meinem File-Storage.
Deaktivieren wir als erstes den RSB auf dem SharePoint Server. Melden Sie sich hierzu an dem SharePoint Server an auf dem der RSB aktiviert ist. Öffnen Sie die PowerShell-ISE als Administrator. Klicken Sie auf „Neu“, um ein neues Script zu erstellen. Fügen Sie jetzt den folgenden Code ein.
$db= Get-SPContentDatabase –Name wss_content_(IHRE_Datenbank)
$rbs = $db.RemoteBlobStorageSettings
$rbs.SetActiveProviderName(„“)
Damit wird RBS auf dem SharePoint Server deaktiviert. Sollte jetzt ein User ein neues Dokument hochladen oder erstellen, so wird dieses Dokument jetzt in der Datenbank gespeichert und nicht mehr auf den File-Storage. Jetzt müssen wir nur noch die alten Dateien zurück in die Datenbank schreiben. Dies können Sie mit dem folgenden Befehl durchführen:
$rbs.Migrate()
Jetzt werden alle Daten aus dem File-Storage zurückgeschrieben. Um den Status des Prozesses zu kontrollieren, können Sie das oben ausgeführte SQL-Script erneut ausführen. Dadurch können Sie dann einsehen wie viele Daten noch migriert werden müssen. Bei meinem Kunden hatten wir damals eine Datenbankgröße von ungefähr 25 GB. Die Migration dauerte ca. 1 Stunde. Natürlich kommt es hier auch ein wenig auf die Performance des Server an. Sobald der Prozess abgeschlossen ist, wird Ihnen das in der PowerShell so angezeigt, dass sich der Curser wieder blickend in der Befehlszeile befindet. Kontrollieren Sie abschließend noch einmal ob alle Daten migriert wurden. Führen Sie hierzu abschließend das oben beschriebene SQL-Script aus. Es sollten nun eine „0“ erscheinen.
Neue Content-DB erstellen
Herzlichen Glückwunsch, Sie haben Ihre Daten aus dem RSB in die Content-DB migriert. Die Herausforderung ist jetzt, das RSB-Schema aus der Datenbank zu bekommen. Denn wir haben zwar jetzt die Daten in der Datenbank, aber nach wie vor das alte Schema.
Sollten Sie jetzt in diesem Zustand ein Backup der gerade migrierten Datenbank erstellen und wieder auf dem neuen SharePoint herstellen, wird Ihnen der SQL-Server freundlich mitteilen, dass die Filestream-Option nicht aktiviert ist. Genau das wollen wir natürlich nicht. Also erstellen wir zuerst eine neue WSS-Content-DB auf Basis unserer Intranet-WSS-Content. Geben Sie hierzu den folgenden Befehl ein:
New-SPContentDatabase -Name WSS_Content_Intranet_v1 -WebApplication http://intranet
Wir haben jetzt eine neue „WSS_Content_Intranet_v1“ Datenbank auf Basis unserer gerade migrierten Datenbank „WSS_Content_Intranet“ ohne die Tabellen „mssqlrbs_Filstream_data_1.rbs“ erstellt. Jetzt müssen wir nur noch die bestehenden Sites aus der – „WSS_Content_DB_Intranet“ in die neue „WSS_Content_DB_Intranet_v1“ verschieben. Dies können wir mit dem folgenden PowerShell-Befehl durchführen. Kalkulieren Sie für diesen Prozess einige Zeit ein!
Get-SPSite -ContentDatabase WSS_Content_DB_Intranet | Move-SPSite -DestinationDatabase WSS_Content_DB_Intranet_v1
Hinweis: Bitte beachten Sie, dass während dieses Prozesses die entsprechenden Websites nicht aufgerufen werden können.
Nachdem der Prozess abgeschlossen wurde, wechseln Sie wieder auf die Central-Administration ihres SharePoint Servers. Klicken Sie auf den Link „Inhaltsdatenbank verwalten“.
Wie Sie sehen wurde die gerade erstellte WSS_Content_DB_v1 ebenfalls eingebunden.
Trennen Sie die Datenbank „WSS_Content_DB_Intranet“. Klicken Sie hierzu auf den Link und scrollen Sie ungefähr in die Mitte der Seite. Setzen Sie die Option „Inhaltsdatenbank entfernen“ und bestätigen Sie ihre Eingabe in dem sich öffnenden Fenster. Klicken Sie dann im unteren Bereich auf „OK“. Überprüfen Sie, ob Sie auf Ihre Intranet-Seite zugreifen können. Sollte dem so sein, können Sie die Datenbank dann auf dem neuen SharePoint Server migrieren. Erstellen Sie hierzu von der neuen WSS_Content_DB_Intranet_v1 ein Full-BackUp. Kopieren Sie das Backup auf den neuen SQL-Server und stellen Sie die Datenbank dort wieder her. Öffnen Sie die PowerShell als Administrator auf dem neuen SharePoint Server und überprüfen Sie die Datenbank für die Migration mit den folgenden Befehl.
Test-SPContentDatabase -Name WSS_Content_DB_Intranet_v1 -WebApplication http://intranet
Sollte der Test erfolgreich verlaufen, können Sie jetzt die Datenbank mit dem Befehl migrieren und einbinden.
Mount-SPContentDatabase -Name WSS_Content_DB_Intranet_v1 -WebApplication http://intranet
Schreibe einen Kommentar