RBS Blob Storage mit Sharepoint 2013

 

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:

  1. Filestreaming auf SQL Server aktivieren
  2. Filestreaming Dateigruppen in Contentdatenbanken einrichten
  3. RBS Client installieren
  4. 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!

Author: Fumus

1 thought on “RBS Blob Storage mit Sharepoint 2013

  1. 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

Schreibe einen Kommentar

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