FILESTREAM-Kompatibilität mit anderen SQL Server-Features

Gilt für:SQL Server

Da SICH FILESTREAM-Daten im Dateisystem befinden, enthält dieses Thema einige Überlegungen, Richtlinien und Einschränkungen für die Verwendung von FILESTREAM mit den folgenden Features in SQL Server:

SQL Server Integration Services (SSIS)

SQL Server Integration Services (SSIS) behandelt FILESTREAM-Daten im Datenfluss wie andere BLOB-Daten mit dem DT_IMAGE SSIS-Datentyp.

Sie können die Transformation für das Importieren von Spalten verwenden, um Dateien aus dem Dateisystem in eine FILESTREAM-Spalte zu laden. Sie können auch die Transformation für das Exportieren von Spalten verwenden, um Dateien aus einer FILESTREAM-Spalte in einen anderen Speicherplatz im Dateisystem zu extrahieren.

Verteilte Abfragen und Verbindungsserver

Über verteilte Abfragen und Verbindungsserver können Sie mit FILESTREAM-Daten arbeiten, indem Sie diese als Daten vom Typ varbinary(max) behandeln. Sie können die FILESTREAM-Funktion PathName() nicht in verteilten Abfragen nutzen, bei denen ein vierteiliger Name verwendet wird. Dies gilt auch, wenn der Name auf einen lokalen Server verweist. Sie können PathName() jedoch in der inneren Abfrage einer Pass-Through-Abfrage nutzen, bei der OPENQUERY()verwendet wird.

Verschlüsselung

FILESTREAM-Daten werden nicht verschlüsselt, auch dann nicht, wenn die transparente Datenverschlüsselung aktiviert ist.

Datenbank-Momentaufnahmen

SQL Server unterstützt keine Datenbankmomentaufnahmen für FILESTREAM-Dateigruppen. Wenn eine FILESTREAM-Dateigruppe in eine CREATE DATABASE ON-Klausel eingeschlossen wird, schlägt die Anweisung fehl, und ein Fehler wird ausgelöst.

Wenn Sie FILESTREAM verwenden, können Sie Datenbankmomentaufnahmen von Standarddateigruppen (nicht-FILESTREAM) erstellen. Die FILESTREAM-Dateigruppen werden für diese Datenbankmomentaufnahmen als offline markiert.

Eine SELECT-Anweisung, die für eine FILESTREAM-Tabelle in einer Momentaufnahme-Datenbank ausgeführt wird, darf keine FILESTREAM-Spalte enthalten, da sonst die folgende Fehlermeldung zurückgegeben wird:

Could not continue scan with NOLOCK due to data movement.

Replikation

Eine varbinary(max) -Spalte, für die das FILESTREAM-Attribut auf dem Verleger aktiviert ist, kann für einen Abonnenten mit oder ohne FILESTREAM-Attribut repliziert werden. Um anzugeben, wie die Spalte repliziert wird, verwenden Sie das Dialogfeld "Artikeleigenschaften - <Artikel>" oder den @schema_option Parameter sp_addarticle oder sp_addmergearticle. Daten, die in einer varbinary(max) -Spalte ohne FILESTREAM-Attribute repliziert werden, dürfen den Grenzwert von 2 GB für diesen Datentyp nicht überschreiten, da anderenfalls ein Laufzeitfehler ausgelöst wird. Es wird empfohlen, das FILESTREAM-Attribut zu replizieren, es sei denn, Sie replizieren Daten in SQL Server 2005 (9.x). Das Replizieren von Tabellen mit FILESTREAM-Spalten in SQL Server 2000 (8.x) Abonnenten wird unabhängig von der angegebenen Schemaoption nicht unterstützt.

Hinweis

Das Replizieren großer Datenwerte von SQL Server auf SQL Server 2005 (9.x) Abonnenten ist auf maximal 256 MB Datenwerte beschränkt. Weitere Informationen finden Sie unter Maximum Capacity Specifications.

Überlegungen zur Transaktionsreplikation

Wenn Sie FILESTREAM-Spalten in Tabellen verwenden, die zur Transaktionsreplikation veröffentlicht werden, beachten Sie Folgendes:

  • Wenn einige Tabellen Spalten mit dem FILESTREAM-Attribut enthalten, können Sie keine Werte für database snapshot oder database snapshot character für die @sync_method-Eigenschaft von sp_addpublication verwenden.

  • Die max text repl size-Option gibt die maximale Datenmenge an, die in eine Spalte eingefügt werden kann, die zur Replikation veröffentlicht wird. Diese Option kann verwendet werden, um die Größe von FILESTREAM-Daten zu kontrollieren, die repliziert werden.

  • Wenn Sie die Schemaoption für die Replikation des FILESTREAM-Attributs angeben, aber die von FILESTREAM benötigte uniqueidentifier -Spalte herausfiltern oder angeben, dass die UNIQUE-Einschränkung für die Spalte nicht repliziert werden soll, wird das FILESTREAM-Attribut bei der Replikation nicht repliziert. Die Spalte wird nur als varbinary(max) -Spalte repliziert.

Überlegungen hinsichtlich der Mergereplikation

Wenn Sie FILESTREAM-Spalten in Tabellen verwenden, die zur Mergereplikation veröffentlicht werden, beachten Sie Folgendes:

  • Sowohl die Mergereplikation als auch FILESTREAM erfordern eine Spalte des Datentyps uniqueidentifier , um die einzelnen Zeilen in einer Tabelle zu identifizieren. Die Mergereplikation fügt automatisch eine Spalte hinzu, wenn die Tabelle sie nicht besitzt. Die Mergereplikation erfordert es, dass die ROWGUIDCOL-Eigenschaft für die Spalte festgelegt ist und der Standardwert NEWID() oder NEWSEQUENTIALID() lautet. Zusätzlich zu diesen Anforderungen erfordert es FILESTREAM, dass eine UNIQUE-Einschränkung für die Spalte definiert wird. Diese Anforderungen bringen Folgendes mit sich:

    • Wenn Sie eine FILESTREAM-Spalte einer Tabelle hinzufügen, die bereits zur Mergereplikation veröffentlicht wurde, vergewissern Sie sich, dass die uniqueidentifier -Spalte über eine UNIQUE-Einschränkung verfügt. Wenn sie über keine UNIQUE-Einschränkung verfügt, fügen Sie der Tabelle in der Veröffentlichungsdatenbank eine benannte Einschränkung hinzu. Standardmäßig veröffentlicht die Mergreplikation diese Schemaänderung, die dann auf jede Abonnentendatenbank angewendet wird.

      Wenn Sie eine UNIQUE-Einschränkung manuell wie beschrieben hinzufügen und die Mergereplikation entfernen möchten, müssen Sie zuerst die UNIQUE-Einschränkung entfernen, da die Replikation ansonsten nicht entfernt wird.

    • Standardmäßig verwendet die Mergereplikation NEWSEQUENTIALID(), da ihre Leistungsfähigkeit gegenüber NEWID() höher ist. Wenn Sie eine uniqueidentifier -Spalte einer Tabelle hinzufügen, die für die Mergereplikation veröffentlicht wird, geben Sie NEWSEQUENTIALID() als Standardwert an.

  • Die Mergereplikation schließt eine Optimierung zum Replizieren von Typen großer Objekte ein. Diese Optimierung wird durch den @stream_blob_columns-Parameter von sp_addmergearticle gesteuert. Wenn Sie die Schemaoption auf die Replikation des FILESTREAM-Attributs festlegen, wird der Wert des @stream_blob_columns-Parameters auf TRUE festgelegt. Diese Optimierung kann mit sp_changemergearticleüberschrieben werden. Mit dieser gespeicherten Prozedur können Sie @stream_blob_columns auf FALSE festlegen. Wenn Sie eine FILESTREAM-Spalte einer Tabelle hinzufügen, die bereits für die Mergereplikation veröffentlicht wurde, sollten Sie die Option mit sp_changemergearticle auf true festlegen.

  • Die Aktivierung der Schemaoption für FILESTREAM, nachdem ein Artikel erstellt wurde, kann zum Fehlschlagen der Replikation führen, wenn die Daten in der FILESTREAM-Spalte 2 GB übersteigen und während der Replikation ein Konflikt auftritt. Wenn Sie Grund zur Annahme haben, dass diese Situation eintritt, sollten Sie den Tabellenartikel löschen und mit der entsprechenden FILESTREAM-Schemaoption, die bei Erstellung aktiviert war, neu erstellen.

  • Die Mergereplikation kann FILESTREAM-Daten über eine HTTPS-Verbindung durch Websynchronisierungsynchronisieren. Diese Daten dürfen die 50 MB-Grenze für die Websynchronisierung nicht übersteigen, andernfalls wird ein Laufzeitfehler generiert.

Protokollversand

DerProtokollversand unterstützt FILESTREAM. Sowohl die primären als auch die sekundären Server müssen SQL Server 2008 (10.0.x) oder eine höhere Version ausführen und FILESTREAM aktiviert haben.

Datenbankspiegelung

FILESTREAM wird von der Datenbankspiegelung nicht unterstützt. Eine FILESTREAM-Dateigruppe kann nicht auf dem Prinzipalserver erstellt werden. Die Datenbankspiegelung kann nicht für eine Datenbank konfiguriert werden, die FILESTREAM-Dateigruppen enthält.

Volltextindizierung

DieVolltextindizierung funktioniert mit einer FILESTREAM-Spalte genauso wie mit einer varbinary(max) -Spalte. Die FILESTREAM-Tabelle muss eine Spalte aufweisen, die die Dateinamenerweiterung für jeden FILESTREAM BLOB enthält. Weitere Informationen finden Sie unter Abfrage mit Volltextsuche, Konfigurieren und Verwalten von Filtern für die Suche und sys.fulltext_document_types (Transact-SQL).For more information, see Query with Full-Text Search, Configure and Manage Filters for Search, and sys.fulltext_document_types (Transact-SQL).

Die Volltext-Engine indiziert den Inhalt der FILESTREAM-BLOBs. Dateien wie beispielsweise Images zu indizieren, ist möglicherweise nicht nützlich. Wenn ein FILESTREAM BLOB aktualisiert wird, wird er neu indiziert.

Failoverclustering

Für das Failoverclustering müssen FILESTREAM-Dateigruppen auf einem freigegebenen Datenträger abgelegt werden. FILESTREAM muss auf jedem Knoten im Cluster aktiviert werden, das die FILESTREAM-Instanz hostet. Weitere Informationen finden Sie unter Einrichten von FILESTREAM auf einem Failovercluster.

SQL Server Express

SQL Server Express unterstützt FILESTREAM. Im Grenzwert für die Datenbankgröße von 10 GB ist der FILESTREAM-Datencontainer nicht inbegriffen.

Eigenständige Datenbanken

Die FILESTREAM-Funktion erfordert etwas Konfiguration außerhalb der Datenbank. Daher sind Datenbanken, die FILESTREAM oder FileTable verwenden, nicht vollständig eigenständig.

Sie können den Einschlusstyp der Datenbank auf PARTIAL festlegen, wenn Sie bestimmte Funktionen eigenständiger Datenbanken verwenden möchten, z. B. eigenständige Benutzer. In diesem Fall müssen Sie jedoch beachten, dass einige Datenbankeinstellungen nicht in der Datenbank enthalten sind und nicht automatisch mit der Datenbank verschoben werden.

Weitere Informationen

Binary Large Object (BLOB)-Daten (SQL Server)