Dateien in einer Datenbank vorzuhalten ist nicht gerade die effektivste Methode. Sharepoint als Informationsplattform und Dokumentmanagement Software ist out-of-the-box so ausgelegt, dass jedes Dokument und dessen Versionen in die Datenbankdateien geschrieben werden. Out-of-the-box heißt aber nicht, dass das auch nicht anders gehen würde. Mit Boardmitten , sprich für 0 Euro, läßt sich der sogenannte Remote-Blob-Storage (RBS) implementieren, der die Dokumente per Filestreaming Protokoll – also schnell – lesen oder schreiben lässt.
Folgende Schritte sind zu machen:
- Filestreaming auf SQL Server aktivieren
- Filestreaming Dateigruppen in Contentdatenbanken einrichten
- RBS Client installieren
- Contentdatenbanken für RBS aktivieren
So..nun mal der Reihe nach:
SQL Server für Filestreaming konfigurieren
Im SQL Server Konfigurationsmanager suchen sie den SQL Datenbankservice und aktivieren sie in den Eigenschaften Filestreaming. Der SQL Server Dienst muss entweder neu gestartet werden oder mit
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
rekonfiguriert werden.
Master Key für Content DB aktivieren
Der Titel der Dateien wird verschlüsselt, nicht der Inhalt. Daher muss in der jeweiligen Conentdatenbank eine Master Key für die Verschlüsselung eingerichtet werden.
Führen Sie dazu folgende Abfrage aus:
use [ContentDB] if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##') create master key encryption by password = N'sollt@schon!geheim..sein!'
Erstellen einer Filestream Dateigruppe
Nun müssen den Contentdatenbanken sogenannte Filestreaming Dateigruppen hinzugefügt werden. Das geht entweder per SQL Server Management Studio oder auch per TSQL Script.
Im SQL Server Management Studio öffnen Sie die Eigenschaften der Contentdatenbank und fügen als erstes eine neue Filestreamdateigruppen im Bereich Dateigruppen hinzu.
Anschliessend legen sie das Verzeichniss für den Blob Storage fest. Das können sie im Bereich Dateien mit Hinzufügen erledigen. Obwohl man eine Datei angeben soll , ist in diesem Fall nur ein Verzeichnis gemeint. Das Verzeichnis wird übrigens erstell. Sollte es vorab schon erstellt worden sein, wird eine Fehlermeldung zurückgegeben.
oder das ganze per Script
if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider') alter database [ContentDB] add filegroup RBSFilestreamProvider contains filestream
alter database [ContentDB] add file (name = RBSFilestreamFile, filename = 'c:Blob') to filegroup RBSFilestreamProvider
RBS Client konfigurieren
Damit Sharepoint die Dateien in den Blob Speicher ablegt, müssen zwei Dinge erledigt werden. Der Client für RBS muss installiert werden und die Datenbank muss für Sharepoint und RBS aktiviert werden.
Unter der Url: http://www.microsoft.com/de-de/download/details.aspx?id=16978 kann der RBS Client heruntergeladen werden werden (RBs_X64.msi). Der Client darf nur einmal installiert werden. Daher unterschiedet sich das Script für die Installation und Aktivierung der ersten Datenbank von der Aktivierung für jede weitere Datenbank.
Installation für Erste DB auf Sharepoint Server
C:>msiexec /qn /lvx* rbs_install_log.txt /i RBS_amd64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="ContentDB" DBINSTANCE="sp2013" FILESTREAMFILEGROUP=Blob FILESTREAMSTORENAME=FilestreamProvider_1
Im Logfile der Installation, die übrigens im Stillen vor sich hinwerkelt und daher erst nach ca. 30 sek fertig sein sollte, findet man gegen Ende
ContentDB für RBS aktivieren
Anschlissend muss mit der Sharepoint Shell die DB für RBS noch aktiviert werden
$cdb = Get-SPContentDatabase ConentDB $rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $rbss.SetActiveProviderName($rbss.GetProviderNames()[0]) $rbss
Zusätzliche DB auf Server
Der RBS Client darf nur einmal installiert werden. Daher muss für jede weitere DB folgender Aufruf in der Konsole gestartet werden:
msiexec /qn /i rbs_amd64.msi REMOTEBLOBENABLE=1 FILESTREAMPROVIDERENABLE=1 DBNAME=ContentDb2 FILESTREAMSTORENAME=FilestreamProvider_1 ADDLOCAL=EnableRBS,FilestreamRunScript DBINSTANCE=SP2013
..und anschliessend wieder per Sharepoint Shell aktiviert werden
$cdb = Get-SPContentDatabase ConentDB $rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $rbss.SetActiveProviderName($rbss.GetProviderNames()[0]) $rbss
Kontrolle
Die schnellste Methode den Erfol zu kontrollieren ist der Upload von Dokumenten. Sie sollten Dokumente hochladen die größer als 100 kb sind. Denn Dateien unter dieser Größe werden in der DB anstatt des BlobStorage geschrieben.
Blob Mindestgröße konfigurieren – Upload Größe einstellen: Standard = 100 kb
Aus Performancegründen lohnt der RBS sichch eigtl. erst ab einer gewissen Größe. Im Allgemeinen wird hier immer wieder 1 MB genannt. Dazu müsste folgendes Script per Sharepoint Shell ausgeführt werden:
$cbd = Get-SPContentDatabase " ContentDB" $cbd.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576 $cbd.Update()
Viel Spaß damit!
Super Artikel mit einem kleinen Fehler beim Ausführen der Installation des RBS Clients, wenn die Filestream Dateigruppe per obigem Skript angelegt wurde.
Die FILESTREAMFILEGROUP muss dem Wert der vorherigen Konfiguration entsprechen, also „RBSFilestreamProvider“ anstatt „Blob“ 🙂
LG
Stefan