FILESTREAM mit SharePoint 2010

Veröffentlichung des Originalartikels: 21.04.2011

Autor: Bill Baer, Senior Technical Product Manager, Microsoft Corporation - SharePoint

FILESTREAM ist eine neue Funktion in SQL Server 2008, welche die Speicherung unstrukturierter Daten in einem NTFS-Dateisystem ermöglicht. FILESTREAM (lokal oder remote) wird in SharePoint 2010 als Möglichkeit zur Kostensenkung unterstützt, indem die Speicherung großer unstrukturierter Binärdaten in handelsüblichen Speicherlösungen mit adressierbaren Inhalten ermöglicht wird.

Unstrukturierte Daten

Unstrukturierte Daten sind Informationen, die keinem definierten Datenmodell folgen oder nicht gut in relationale Tabellen in SharePoint passen. Unstrukturierte Daten kann sich auf Microsoft Office-Dokumentdateiformate, Video-, Audio- und dazugehörige Dateitypen beziehen.

 

Strukturierte Daten

Strukturierte Daten in SharePoint beziehen sich auf die Metadaten, die ihren entsprechenden unstrukturierten bzw. BLOB-Daten zugeordnet sind. Relationale Datenbanken werden am häufigsten als Beispiele strukturierter Daten genannt.

 

SQL Server und Speicherung unstrukturierter Daten

Es gibt drei Ansätze zum Speichern unstrukturierter Daten mit SQL Server: RBS, SQL BLOB und FILESTREAM.

  • Bei RBS (Remote-BLOB-Speicherung) ist SharePoint von einer neuen Ebene in SQL Server abhängig, auf der BLOB-Daten gelesen oder aktualisiert werden, die außerhalb der Datenbank in gesonderten BLOB-Speichern (Dateisystem oder dedizierte BLOB-Speicher) gespeichert sind.
  • Bei SQL BLOB, das sich auf die herkömmliche BLOB-Speicherung mit SharePoint bezieht, werden BLOB-Daten zusammen mit den strukturierten Metadaten in der Inhaltsdatenbank gespeichert.
  • FILESTREAM

 

FILESTREAM – Übersicht

FILESTREAM wird für den Datentyp varbinary(max) so implementiert, dass das Datenbankmodul angewiesen wird, unstrukturierte Daten im Datensystem mithilfe einer FILESTREAM-Dateigruppe zu speichern, die Dateisystemverzeichnisse statt der Dateien selbst enthält und die als Datencontainer bezeichnet werden. Datencontainer bilden die Schnittstelle zwischen der Datenbankmodul- und Dateisystemspeicherung. varbinary ist die binäre Datentypkennzeichnung für binäre große Objekte, die in SharePoint 2010-Inhaltsdatenbanken gespeichert sind, und bezieht sich auf Binärdaten mit variabler Länge. (max) bezieht sich auf einen Wert, der angibt, dass die maximale Speichergröße 2^31-1 Bytes bzw. 2 GB ist. RBS (Remote-BLOB-Speicherung) bietet keine Möglichkeit zum Überschreiten der von SharePoint auferlegten maximalen Dateigröße von 2 GB.

 

In SharePoint 2010 wird auf Remote-BLOB-Daten mithilfe einer eindeutigen ID in Inhaltsdatenbanken verwiesen, die für RBS konfiguriert sind (siehe die Abbildung).

 

 

 

 

 

FILESTREAM bietet hinsichtlich Leistung mehrere Vorteile: 1.) FILESTREAM nutzt den NT-Systemcache zum Zwischenspeichern von Dateidaten, wodurch die Auswirkungen verringert werden, die FILESTREAM-Daten auf die Leistung des Datenbankmoduls haben, und 2.) wird der SQL Server-Pufferpool nicht verwendet, weshalb Arbeitsspeicher für die Verarbeitung von Abfragen zur Verfügung steht.

 

FILESTREAM bietet einen optimalen Nutzen in Szenarien, in denen SharePoint zum Speichern großer BLOB-Daten, z. B. von Videodateien, die von FILESTREAM profitieren, oder von BLOB-Daten mit mehr als 1 MB dient.

 

Besondere Überlegungen

 

FILESTREAM und Aufrechterhaltung des Geschäftsbetriebs

 

FILESTREAM wird nicht von der Datenbankspiegelung unterstützt, da eine FILESTREAM-Dateigruppe nicht auf dem Hauptserver erstellt und die Datenbankspiegelung nicht für eine Datenbank konfiguriert werden kann, die FILESTREAM-Dateigruppen enthält. Wenn der FILESTREAM-Anbieter zum lokalen Speichern von BLOB-Daten (in derselben Inhaltsdatenbank) verwendet wird, kann die Datenbank nicht für die Spiegelung konfiguriert werden.

 

Wenn der FILESTREAM-Anbieter zum Speichern der BLOB-Daten in einer gesonderten Datenbank konfiguriert ist oder ein BLOB-Speicher eines Drittanbieters verwendet wird, kann die Inhaltsdatenbank gespiegelt werden. Dabei deckt die Datenbankspiegelung allerdings nur die Inhaltsdatenbank und nicht die BLOB-Daten ab. Die BLOB-Daten müssen getrennt behandelt werden und mit den dazugehörigen Metadaten (Inhaltsdatenbank) synchron gehalten werden. Für FILESTREAM BLOB-Datenbanken kann dies mithilfe des Protokollversands erfolgen.

 

Die Unterschiede zwischen FILESTREAM und SQL Server Remote-BLOB-Speicherung werden auch hier behandelt: https://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.

 

FILESTREAM und der Office Web Apps-Cache

 

Der Office Web Apps-Cache wird von der Word Web App und PowerPoint Web App zum Erstellen einer Version eines Dokuments verwendet, dessen Anzeige im Browser angefordert wird. Leistung und Ressourcenauslastung des Servers werden dadurch optimiert, dass eine zwischengespeicherte Version eines Dokuments oder einer Präsentation in den Fällen zur Verfügung gestellt wird, in denen mehrere Anforderungen desselben Dokuments erfolgen.

 

Der Office Web Apps-Cache verteilt sich auf zwei verschiedene Ebenen, d. h. zum einen auf das Serverdateisystem und zum anderen auf eine spezielle Websitesammlung, die webanwendungsbezogen gehostet wird. Über Office Web Apps erfolgte Dokument- oder Präsentationsanforderungen werden von beiden Caches erfüllt, wenn die Bilder für die Nutzung durch den Client gerendert werden. Beide Cachespeicherorte werden von allen Websitesammlungen in einer Webanwendung verwendet, für die die Office Web Apps-Funktionen aktiviert sind.

 

Inhaltsdatenbanken, für die FILESTREAM konfiguriert ist, speichern die im Cache zwischengespeicherten Versionen des Dokuments oder der Präsentation im konfigurierten Speicherort des Anbieters. Es wird empfohlen, den Office Web Apps-Cache für eine Datenbank zu konfigurieren, die nicht für FILESTREAM konfiguriert ist.

 

Konfigurieren von FILESTREAM mit SharePoint 2010

Die folgenden Anweisungen sind für Demonstrationszwecke und eine Bereitstellung mit einem Einzelserver gedacht und dienen zur Implementierung des lokalen FILESTREAM-Anbieters.

 

Aktivieren von FILESTREAM für die SQL Server-Zielinstanz

 

1. Klicken Sie auf Start, dann auf Alle Programme, zeigen Sie auf Microsoft SQL Server 2008 (R2) und auf Konfigurationstools, und klicken Sie dann auf SQL Server-Konfigurations-Manager.

2. Klicken Sie in der Liste mit der rechten Maustaste auf SQL Server-Dienste, und klicken Sie dann auf Öffnen.

3. Wechseln Sie im Snap-In SQL Server-Konfigurations-Manager zur Instanz von SQL Server, für die Sie FILESTREAM aktivieren möchten.

4. Klicken Sie mit der rechten Maustaste auf die Instanz, und klicken Sie dann auf Eigenschaften.

5. Klicken Sie im Dialogfeld Eigenschaften von SQL Server auf die Registerkarte FILESTREAM.

6. Aktivieren Sie das Kontrollkästchen FILESTREAM für Transact-SQL-Zugriff aktivieren.

7. Wenn das Lesen und Schreiben von FILESTREAM-Daten aus Windows erforderlich ist, aktivieren Sie das Kontrollkästchen FILESTREAM für E/A-Streamingzugriff auf Datei aktivieren. Geben Sie den Namen der Windows-Freigabe in das Feld Windows-Freigabename ein.

8. Wenn Remoteclients auf FILESTREAM-Daten in dieser Freigabe zugreifen müssen, aktivieren Sie Streamingzugriff von Remoteclients auf FILESTREAM-Daten zulassen.

9. Klicken Sie auf Übernehmen.

10. Klicken Sie auf Start und anschließend auf Alle Programme. Klicken Sie auf Microsoft SQL Server 2008 (R2) und dann auf SQL Server Management Studio.

11. Klicken Sie in SQL Server Management Studio auf Neue Abfrage, um den Abfrage-Editor zu öffnen.

12. Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

 

EXEC sp_configure filestream_access_level, 2

 

Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

 

RECONFIGURE

Bereitstellen des RBS-Datenspeichers

 

1. Klicken Sie auf Start und anschließend auf Alle Programme. Klicken Sie auf Microsoft SQL Server 2008 (R2) und dann auf SQL Server Management Studio.

2. Erweitern Sie Datenbanken.

3. Wählen Sie die Inhaltsdatenbank aus, für die Sie einen BLOB-Speicher erstellen möchten, und klicken Sie dann auf Neue Abfrage.

4. Klicken Sie in SQL Server Management Studio auf Neue Abfrage, um den Abfrage-Editor zu öffnen.

5. Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

 

use [Datenbankname]

 

if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'

 

Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

 

use [Datenbankname]

 

if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [Datenbankname] add filegroup RBSFilestreamProvider contains filestream

 

Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

 

use [Datenbankname]

 

alter database [Datenbankname] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider

Installieren des Microsoft SQL Server 2008 R2-RBS (Remote-Blob-Speichers)

 

Laden Sie das x64-Paket für den Microsoft SQL Server 2008 R2-RBS aus dem Microsoft SQL Server 2008 R2 Feature Pack unter folgender Adresse herunter: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.

 

Öffnen Sie eine Eingabeaufforderung mit Administratorberechtigungen, und führen Sie zum Installieren des im vorherigen Schritts heruntergeladenen RBS.MSI-Pakets den folgenden Befehl aus:

 

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Datenbankame>" DBINSTANCE="<Instanzname>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

 

HINWEIS

Geben Sie den vollständigen Pfad zum RBS.MSI-Paket im obigen Status an, d. h. C:\Users\Administrator\Desktop\RBS.MSI. Geben Sie Werte für DBNAME und DBINSTANCE entsprechend Ihrer Umgebung ein.

 

Aktivieren von RBS

1. Klicken Sie imStartmenü auf Alle Programme.

2. Klicken Sie auf Microsoft SharePoint 2010-Produkte.

3. Klicken Sie auf SharePoint 2010-Verwaltungsshell.

4. Geben Sie in der SharePoint 2010-Verwaltungsshell die folgende Windows PowerShell-Anweisung zum Festlegen der zu konfigurierenden Datenbank ein:

$database=Get-SPContentDatabase –Identity “Datenbankname”

Geben Sie in der SharePoint 2010-Verwaltungsshell die folgende Windows PowerShell-Anweisung zum Abrufen des Objekts mit den Einstellungen an, die bestimmen, wie die Inhaltsdatenbank Microsoft SQL Server-RBS nutzt:

$rbs=$database.RemoteBlobStorageSettings

Geben Sie in der SharePoint 2010-Verwaltungsshell die folgende Windows PowerShell-Anweisung zum Bestimmen ein, ob RBS für die ausgewählte Inhaltsdatenbank installiert wurde:

$rbs.Installed()

HINWEIS

Das Ergebnis von $rbs.Installed() muss True sein. Lautet das Ergebnis False, prüfen Sie, ob RBS.MSI erfolgreich installiert wurde, indem Sie die Datei rbs_install_log.txt überprüfen. Vergewissern Sie sich, dass die Installationsanweisung in der SharePoint 2010-Verwaltungsshell ausgeführt wurde. Geben Sie die folgende Windows PowerShell-Anweisung ein, um RBS für die ausgewählte Inhaltsdatenbank zu aktivieren:

 

$rbs.Enable()

Geben Sie in der SharePoint 2010-Verwaltungsshell die folgenden Windows PowerShell-Anweisungen ein, um den RBS-Anbieter für die ausgewählte Inhaltsdatenbank festzulegen:

$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])

 

$rbs

 

HINWEIS

Das Ergebnis von $rbs muss wie folgt lauten:

Tabelle 1

 

Anhang zu Tabelle 1

 

Enabled gibt an, ob RBS für die ausgewählte Inhaltsdatenbank aktiviert wurde oder nicht.

 

ActiveProviderName ist der Name des SQL RBS-Anbieters, in dem neue Dateien gespeichert werden. Dieser Wert ist NULL, wenn neue Dateien nicht im SQL RBS gespeichert werden.

 

MinimumBlobStorageSize bezieht sich auf die Mindestgröße, ab der ein BLOB für die RBS-Speicherung in Betracht gezogen wird. BLOB-Daten, deren Größe den angegebenen Wert von MinimumBlobStorageSize übersteigt, werden im RBS-Datenspeicher gespeichert.

 

FILESTREAM-Leistungsdaten verdeutlichen, dass BLOB-Daten größer als 1 MB die effizienteste Streamingleistung bieten. Siehe auch https://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.

 

 

So konfigurieren Sie MinimumBlobStorageSize:

1. Klicken Sie imStartmenü auf Alle Programme.

2. Klicken Sie auf Microsoft SharePoint 2010-Produkte.

3. Klicken Sie auf SharePoint 2010-Verwaltungsshell.

4. Geben Sie in der SharePoint 2010-Verwaltungsshell die folgenden Windows PowerShell-Anweisungen zum Festlegen der Größe von MinimumBlobStorageSize auf 1 MB ein:

$database = Get-SPContentDatabase “Datenbankname”

 

$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

 

$database.Update()

UpgradePersistedProperties gibt die Namen und Werte von Feldern an, die gelöscht oder geändert wurden.

 

Überprüfen der Installation

So überprüfen Sie die FILESTREAM-Konfiguration und RBS-Installation:

 

1. Klicken Sie auf Start und anschließend auf Alle Programme. Klicken Sie auf Microsoft SQL Server 2008 und dann auf SQL Server Management Studio.

2. Erweitern Sie Datenbanken.

3. Wählen Sie die Inhaltsdatenbank aus, für die Sie einen BLOB-Speicher erstellen möchten, und klicken Sie dann auf Neue Abfrage.

4. Klicken Sie in SQL Server Management Studio auf Neue Abfrage, um den Abfrage-Editor zu öffnen.

5. Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Code ein:

USE [Datenbankname]

SELECT * FROM dbo.DatabaseInformation

Bestätigen Sie, dass die Zeilen RBSCollectionId und RBSProvider verfügbar sind.

 

Testen des RBS-Datenspeichers

1. Wählen Sie eine gewünschte Dokumentbibliothek für eine Website in der konfigurierten Inhaltsdatenbank aus.

2. Laden Sie eine Datei hoch, die größer als 1 MB ist.

3. Klicken Sie auf dem Computer mit dem RBS-Datenspeicher auf Start und dann auf Computer.

4. Wechseln Sie zum RBS-Datenspeicherverzeichnis.

5. Wechseln Sie zur Dateiliste, und öffnen Sie den Ordner mit dem jüngsten Änderungsdatum (nicht $FSLOG). Öffnen Sie innerhalb dieses Ordners die Datei mit dem jüngsten Änderungsdatum. Überprüfen Sie, ob diese Datei dieselbe Größe und denselben Inhalt hat, wie die Datei, die Sie hochgeladen haben. Sollte dies nicht der Fall sein, stellen Sie sicher, dass RBS ordnungsgemäß installiert und aktiviert ist.

Die Verzeichnisstruktur des Datenspeichers sieht ungefähr so aus wie im folgenden Diagramm.

 

 

HINWEIS

Wenn der Fehler "Die URL '<Dokumentbibliothek>/Datei ist ungültig. Möglicherweise verweist sie auf eine nicht vorhandene Datei bzw. einen nicht vorhandenen Ordner oder auf eine gültige Datei bzw. einen gültigen Ordner außerhalb der aktuellen Website." angezeigt wird, sobald Dokumente hochgeladen werden, die größer als der für MinimumBlobStorageSize konfigurierte Wert sind, öffnen Sie den SQL Server-Konfigurations-Manager. Aktivieren Sie FILESTREAM für E/A-Streamingzugriff auf Datei aktivieren, und starten Sie den SQL Server-Dienst (MSSQLSERVER) neu.

 

Zusätzliche Ressourcen

 

 

Kategorie: Vorgehensweise; SharePoint 2010

Veröffentlichung: 22.04.2011 9:00 Uhr

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter FILESTREAM with SharePoint 2010.