Websitesammlung in eine neue Inhaltsdatenbank verschieben – Kurzanleitung

Vorhandene Websitesammlung in eine neue Inhaltsdatenbank verschieben

Es gibt einige Gründe, um eine zusätzliche Inhaltsdatenbank für SharePoint zu erstellen. Zum einen kann z.B. die maximal empfohlene Größe der Content-DB erreicht sein, zum anderen kann der Wunsch nach etwas mehr Performance-Gewinn die Aufteilung der Inhaltsdatenbanken rechtfertigen.

Man sollte aber nach Möglichkeit nicht einfach die Option „Inhaltsdatenbank hinzufügen“ (Add a content database) in der Zentraladministration benutzen, da die Einstellungen noch optimiert werden sollten.

Websitesammlung in eine neue Inhaltsdatenbank verschieben - Nicht benutzen - Inhaltsdatenbank hinzufügen - No - Add a content database - SharePoint 2013

In diesem Artikel zeige ich, wie man eine neue Inhaltsdatenbank für den SharePoint anlegt, konfiguriert und die vorhandene Websitesammlung (Sitecollection) in diese neue Datenbank verschiebt.

Ist-Zustand

SharePoint Umgebung

  • SharePoint 2013 SP1 (On-Premises, 3 Tier Cluster)
  • MS SQL-Server 2008 R2 Failover-Cluster
  • Inhaltsdatenbank „SP_Content“ (etwas über 200GB groß)
  • URL zum Portal: https://sharepoint.domain.com

Vorüberlegungen

In unserem Fall ist die von Microsoft maximal empfohlene Inhaltsdatenbankgröße (von 200GB) erreicht, sodass wir eine weitere Inhaltsdatenbank erstellen wollen. Auch hoffen wir auf einen Performancegewinn für eine spezielle Websitesammlung, die wir in die neue Inhaltsdatenbank verschieben werden (mit der Option, die DBs auf unterschiedliche Festplatten bzw. Daten-LUNs zu legen).

Am Ende wird ein IIS-Reset nötig – das ist mit einer kurzen Downtime des SharePoint verbunden.

Sobald die Erstellung der zusätzlichen Content-DB erfolgt ist, werden die später neu erzeugten Sitecollctions im Standardfall (per WebGUI erstellt) nacheinander (per Round-Robin) auf die Inhaltsdatenbanken verteilt. (Bei der Erstellung per PowerShell kann das beeinflusst werden (New-SpSite -ContentDatabase))

Durchführung : Vorhandene Websitesammlung in eine neue Inhaltsdatenbank verschieben

Nun geht es zur Sache.

Wir werden uns einen Überblick über die vorhandene Datenbanken, Webapplikationen und Sitecollections verschaffen, eine neue Content-DB erstellen, die SQL-Parameter dieser Datenbank anpassen und eine vorhandene Websitesammlung in diese neue Inhaltsdatenbank verschieben.

Übersicht verschaffen – Infos holen

Zuerst allgemeine Kommandos.

# SP-Module laden
Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

#Puffer (sonst werden z.B. Spalten rechts abgeschnitten etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

 

Überblick über die WebApps, Inhaltsdatenbanken etc.

# Uebersicht verschaffen
# -----------------------------------------------------------

# Webanwendungen auflisten
Get-SPWebApplication | ft -Auto DisplayName, Status, ContentDatabases, Url, TypeName, ApplicationPool

# Alle Sitecollections mit allen relevanten Informationen (User-Namen werden aufgelöst)
Get-SPSiteAdministration -Limit All | select Url, Title, OwnerDisplayName, OwnerLoginName, OwnerEmail, SecondaryContactDisplayName, SecondaryContactLoginName, SecondaryContactEmail, @{label="Size in MB";Expression={[math]::round($_.DiskUsed/1MB, 2)}}, UsersCount, CurrentResourceUsage, AverageResourceUsage, ReadLocked, WriteLocked, ReadOnly, LockIssue, SiteSubscription, AdministrationSiteType, AllowSelfServiceUpgrade, InheritAllowSelfServiceUpgradeSetting, RootWebProvisioned, RootWebTemplate, Description | ft * -AutoSize

# Summe aller Sites (Auch My-Sites)
$Sites = Get-SPSiteAdministration -Limit All ; Write-Host "Anzahl aller Sites: $(($Sites).Count)"

# Anzahl der Sites in den einzelnen Inhaltsdatenbanken (auch MySites)
Get-SPContentDatabase | ft Name, CurrentSiteCount -Auto

# Inhaltsdatenbanken mit Basisinfos anzeigen
Get-SPContentDatabase | ft Name, CurrentSiteCount, Status, Type, @{label="DiskSizeRequired in MB";Expression={[math]::round($_.DiskSizeRequired/1MB, 2)}}, IsAttachedToFarm, NeedsUpgrade, Server, WebApplication, Id -auto

Die Ausgabe von GetSpWebApplication sieht dann ungefähr so aus:

DisplayName         Status  ContentDatabases  Url
-----------         ------  ----------------  ---
SharePoint Portal   Online {SP_Content}      https://sharepoint.domain.com/
SharePoint Profiles Online {SP_Profiles}     https://my-sp.domain.com/

SQL-Server Empfehlungen für SharePoint

Einige Einstellungen sollten am besten schon vor der Erstellung der Datenbank vorgenommen werden.

Dazu zählen z.B. die Einstellungen der „model“-DB.

Hier kann man die SQL-Server Empfehlungen für den SharePoint nachlesen.

Neue Inhaltsdatenbank anlegen

Wenn die aktuelle Inhaltsdatenbank „SP_Content“ heißt, dann könnte man die neue Inhaltsdatenbank z.B. „SP_Content_02“ nennen.

# Neue Inhaltsdatenbank erzeugen - Beispiel
New-SPContentDatabase -Name SP_Content_02 -WebApplication https://sharepoint.domain.com

SQL-Server Datenbankeinstellungen anpassen

Nachdem die Inhaltsdatenbank erstellt ist, sollten die Datenbankeinstellungen in SSMS optimiert bzw. kontrolliert werden. Dazu gehören z.B. „Initial Size“ und besonders „Autogrowth„.

Auch wenn die „model“-DB im Vorfeld angepasst wurde, werden trotzdem nicht alle vorgenommenen (Template-)Einstellungen übernommen und müssen per Hand vorgenommen werden.

In dem Artikel „SQL Server Empfehlungen für SharePoint“ sind die für den SharePoint optimalen Datenbankeinstellungen aufgelistet.

Websitesammlung in die neue Inhaltsdatenbank verschieben

Folgendes PowerShell-Kommando verschiebt die Sitecollection aus der alten Inhaltsdatenbank in die neue Inhaltsdatenbank.

Die URL zur Websitesammlung und der Name der neuen DB müssen angepasst werden.

# Vorhandene Websitesammlung von einer Datenbank in die neue vorhandene Datenbank verschieben
Move-SPSite https://sharepoint.domain.com/sites/sitecollection -DestinationDatabase SP_Content_02

IIS-Reset durchführen

Der IIS muss zurückgesetzt werden. Das ist mit einer kurzen Downtime verbunden, falls kein LoadBalancing verwendet wird.

Entweder

# IIS-Reset auf einzelnen Servern (lokal ausführen)
iisreset /noforce

oder

# IIS Reset auf mehreren Servern gleichzeitig (remote)
$Server = 'sp-server01', 'sp-server02', 'sp-server03', 'sp-server04'
Invoke-Command -ComputerName $Server -ScriptBlock {iisreset /noforce}

Links

  1. technet.microsoft.com: Software boundaries and limits for SharePoint Server 2016
  2. technet.microsoft.com: Software boundaries and limits for SharePoint 2013
  3. absolute-sharepoint.com: Free Whitepaper: Maximizing SQL 2012 Performance for SharePoint 2013 Whitepaper
  4. sharepointszu.com: SQL Script für die Erstellung von Best Practice SharePoint Datenbanken
  5. sharepoint-wiese.de: SQL Server Empfehlungen für SharePoint

Schreibe einen Kommentar

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