Es besteht die folgende Aufgabenstellung: Die Inhaltsdatenbank einer SharePoint Installation ist für den ausführenden Datenbank Server zu groß geworden und soll auf einen Leistungsstärkeren Rechner umgezogen werden.

Diese Schritt für Schritt Anleitung geht alle benötigten Arbeiten durch um “unfallfrei” am Ziel anzukommen.

Dabei wird nur das Verschieben einer Inhaltsdatenbank beschrieben, die Datenbank der Zentraladministration kann so nicht verschoben werden!

Voraussetzungen:

Die hier aufgezeigte Lösung verwendet die SharePoint 2010-Verwaltungsshell (Powershell 2.0 mit SharePoint CmdLets). Zu finden unter Start -> Microsoft SharePoint 2010 Products -> SharePoint 2010-Verwaltungsshell

Bild 1

Die in diesem Beispiel verwendete URL ist http://localhost:8080

ACHTUNG: Alle Schritte sollten erst durchgeführt werden, nachdem die Datenbank mit den bekannten BACKUP Strategien gesichert wurde!

Der ausführende Benutzer muss Mitglied in der Rolle Administrator auf den entsprechenden Rechnern sein.

Schritt 1 Herausfinden welche Datenbank zur Web Applikation gehört

Der Powershell Befehl

Get-SPContentDatabase -WebApplication http://localhost:8080

liefert folgende Informationen:

Bild 2

Id – GUID der Datenbank
Name – DB Name
WebApplication – Name der zugehörigen WebApplikation
Server –Rechner auf dem die DB installiert ist
CurrentSiteCount- Anzahl der Site Collections in der Datenbank

Damit wissen wir, dass es sich um die SharePoint_DEV_MoveContentDB handelt.

Schritt 2 Alle laufenden Timer Jobs beenden

Zu aller erst lesen wir alle TimerJobs der Web Applikation mit

Get-SPTimerJob -webapplication http://localhost:8080 | select name | Out-File c:timerjobs.txt –Append –Encoding ascii

aus. Dabei wird das Ergebnis in der Textdatei timerjobs.txt im C Verzeichnis abgelegt.

ACHTUNG: Datei NICHT löschen, wird im Schritt 8 zum wieder Starten der Jobs benötigt !

Diese Datei können wir nun mit einer Schleife durchlaufen um jeden einzelnen Timer Job zu beenden.

ForEach($tmrjob in (Get-Content c:timerjobs.txt)) { Get-SPTimerJob -Identity $tmrjob | Disable-SPTimerjob }

Um zu prüfen, ob auch kein TimerJob mehr läuft bzw. geplant ist, kann in der Zentraladministration der Auftragsstaus geprüft werden.

Bild 3

Zentraladministration -> Überwachung -> Auftragsstatus überprüfen

In der Auswahl Ansicht die Option Webanwendung wählen und gegebenenfalls die korrekte Webanwendung auswählen.

Bild 4

Wichtig ist dabei, dass unter Geplant und Wird ausgeführt (siehe 3 und 4 im Screenshot) keine Timerjobs mehr aufgeführt werden.

Schritt 3 Inhaltsdatenbank von Web Applikation trennen

Hier benötigen wir den in Schritt 1 ermittelten Datenbanknamen. In unserem Fall SharePoint_DEV_MoveContentDB. Mit dem Powershellbefehl:

Dismount-SPContentDatabase „SharePoint_DEV_MoveContentDB“

wird die Inhaltsdatenbank nach einer Sicherheitsabfrage getrennt.

Bild 5

Schritt 4 Inhaltsdatenbank vom SQL Server trennen

SQL Server Management Studio starten und mit dem Datenbank Server verbinden. Im Knoten Datenbanken die entsprechende DB suchen, rechte Maustaste, Tasks und Trennen … wählen.

Bild 6

ACHTUNG AUSFÜHRENDER BENUTZER BENÖTIGT db_owner BERECHTIGUNG FÜR DIESEN SCHRITT !

Schritt 5 Inhaltsdatenbank kopieren

Die abgehängte Datenbank muss nun auf das Zielsystem kopiert werden.

Es handelt sich dabei um die *.mdf (Primäres Datenbankfile) und *.ldf (Transaktionslogfile) Datei .

Dieser Schritt lässt sich ebenfalls in der Powershell Oberfläche durchführen. Dazu wird das Quellverzeichnis: C:Program FilesMicrosoft Office Servers14.0DataMSSQL10.SHAREPOINTMSSQLDATA

und Zielverzeichnis:

\xxx.xxx.xxx.xxxd$SQLServer

benötigt. Der Befehl XCOPY erledigt dann den Rest:

XCOPY „C:Program FilesMicrosoft Office Servers14.0DataMSSQL10.SHAREPOINTMSSQLDATASharePoint_DEV_MoveContentDB*.*“ „\xxx.xxx.xxx.xxxd$SQLServer“

Nach erfolgreichem kopieren nicht vergessen die Dateien auf dem Quellsystem zu löschen.

Schritt 6 Inhaltsdatenbank im neuen SQL Server verfügbar machen

Dazu wieder das SQL Management Studio öffnen, rechter Mausklick auf den Datenbankenknoten und den Befehl Anfügen wählen:

Bild 7

Im sich öffnenden Dialog Hinzufügen klicken, die kopierte Datenbank auswählen und mit OK bestätigen.

Bild 8

Im Dialog sollten nun beide kopierten Dateien zu sehen sein und nach erneutem bestätigen durch die Taste OK wird die Datenbank dem neuen SQL Server hinzugefügt und ist im SQL Management Studio unter dem Knoten Datenbanken aufgeführt.

ACHTUNG AUSFÜHRENDER BENUTZER BENÖTIGT dbcreator SERVERROLLE FÜR DIESEN SCHRITT !

Schritt 7 Inhaltsdatenbank der Web Applikation wieder zuordnen

Diesen Schritt erledigt wieder eine Powershell Anweisung:

Mount-SPContentDatabase „SharePoint_DEV_MoveContentDB“ -DatabaseServer „NEWDBSERVERNAME“ -WebApplication http://localhost:8080

Nach erfolgreicher Durchführung wird uns die Datenbankinformation ausgegeben:

Bild 9

Schritt 8 TimerJobs wieder starten

Für das Starten der Timerjobs verwenden wir wieder die in Schritt 2 erstellte Textdatei.

ForEach($tmrjob in (Get-Content c:timerjobs.txt)) {Get-SPTimerJob -Identity $tmrjob | Enable-SPTimerjob}

Um das Ergebnis zu prüfen kann wieder in der Zentraladministration der Auftragsstatus überprüft werden. Im Bereich Geplant sollten nun wieder die anstehenden TimerJobs aufgeführt sein.

Bild 10

Zusammenfassung

Nachdem nun alles hoffentlich unfallfrei funktioniert hat ist die WebApplikation wie gewohnt erreichbar.

http://localhost:8080

Quelle: http://technet.microsoft.com/en-us/library/cc287899.aspx