FILESTREAM-Kompatibilität mit anderen SQL Server-FunktionenFILESTREAM Compatibility with Other SQL Server Features

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Da sich die FILESTREAM-Daten im Dateisystem befinden, werden in diesem Thema Informationen, Richtlinien und Einschränkungen in Bezug auf die Verwendung von FILESTREAM mit den folgenden Funktionen in SQL ServerSQL Server beschrieben: Because FILESTREAM data is in the file system, this topic provides some considerations, guidelines, and limitations for using FILESTREAM with the following features in SQL ServerSQL Server:

SQL Server Integration Services (SSIS)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.SQL Server Integration Services (SSIS) handles FILESTREAM data in the data flow like any other BLOB data by using the DT_IMAGE SSIS data type.

Sie können die Transformation für das Importieren von Spalten verwenden, um Dateien aus dem Dateisystem in eine FILESTREAM-Spalte zu laden.You can use the Import Column transformation to load files from the file system into a FILESTREAM column. 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.You can also use the Export Column transformation to extract files from a FILESTREAM column to another location in the file system.

Verteilte Abfragen und VerbindungsserverDistributed Queries and Linked Servers

Über verteilte Abfragen und Verbindungsserver können Sie mit FILESTREAM-Daten arbeiten, indem Sie diese als Daten vom Typ varbinary(max) behandeln.You can work with FILESTREAM data through distributed queries and linked servers by treating it as varbinary(max) data. 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.You cannot use the FILESTREAM PathName() function in distributed queries that use a four-part name, even when the name refers to the local server. Sie können PathName() jedoch in der inneren Abfrage einer Pass-Through-Abfrage nutzen, bei der OPENQUERY()verwendet wird.However you can use PathName() in the inner query of a pass-through query that uses OPENQUERY().

VerschlüsselungEncryption

FILESTREAM-Daten werden nicht verschlüsselt, auch dann nicht, wenn die transparente Datenverschlüsselung aktiviert ist.FILESTREAM data is not encrypted even when transparent data encryption is enabled.

Datenbank-MomentaufnahmenDatabase Snapshots

SQL ServerSQL Server unterstützt keine Datenbankmomentaufnahmen für FILESTREAM-Dateigruppen. does not support database snapshots for FILESTREAM filegroups. Wenn eine FILESTREAM-Dateigruppe in eine CREATE DATABASE ON-Klausel eingeschlossen wird, schlägt die Anweisung fehl, und ein Fehler wird ausgelöst.If a FILESTREAM filegroup is included in a CREATE DATABASE ON clause, the statement will fail and an error will be raised.

Wenn Sie FILESTREAM verwenden, können Sie Datenbankmomentaufnahmen von Standarddateigruppen (nicht-FILESTREAM) erstellen.When you are using FILESTREAM, you can create database snapshots of standard (non-FILESTREAM) filegroups. Die FILESTREAM-Dateigruppen werden für diese Datenbankmomentaufnahmen als offline markiert.The FILESTREAM filegroups are marked as offline for those database snapshots.

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:A SELECT statement that is executed on a FILESTREAM table in a database snapshot must not include a FILESTREAM column; otherwise, the following error message will be returned:

Could not continue scan with NOLOCK due to data movement.

ReplikationReplication

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.A varbinary(max) column that has the FILESTREAM attribute enabled at the Publisher can be replicated to a Subscriber with or without the FILESTREAM attribute. Verwenden Sie das Dialogfeld Artikeleigenschaften - <Artikel> oder den @schema_option-Parameter von sp_addarticle oder sp_addmergearticle, um die Methode für die Replikation der Spalte anzugeben.To specify the way in which the column is replicated, use the Article Properties - <Article> dialog box or the @schema_option parameter of sp_addarticle or 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.Data that is replicated to a varbinary(max) column that does not have the FILESTREAM attribute must not exceed the 2-GB limit for that data type; otherwise, a run-time error is generated. Wir empfehlen, dass Sie das FILESTREAM-Attribut replizieren, außer wenn Sie Daten für SQL Server 2005SQL Server 2005replizieren.We recommend that you replicate the FILESTREAM attribute, unless you are replicating data to SQL Server 2005SQL Server 2005. Das Replizieren von Tabellen mit FILESTREAM-Spalten auf SQL Server 2000SQL Server 2000 -Abonnenten wird unabhängig von der festgelegten Schemaoption nicht unterstützt.Replicating tables that have FILESTREAM columns to SQL Server 2000SQL Server 2000 Subscribers is not supported, regardless of the schema option that is specified.

Hinweis

Das Replizieren von großen Datenwerten von SQL Server 2017SQL Server 2017 nach SQL Server 2005SQL Server 2005 -Abonnenten ist auf maximal 256 MB beschränkt.Replicating large data values from SQL Server 2017SQL Server 2017 to SQL Server 2005SQL Server 2005 Subscribers is limited to a maximum of 256 MB data values. Weitere Informationen finden Sie unter Maximum Capacity Specifications.For more information, see Maximum Capacity Specifications.

Überlegungen zur TransaktionsreplikationConsiderations for Transactional Replication

Wenn Sie FILESTREAM-Spalten in Tabellen verwenden, die zur Transaktionsreplikation veröffentlicht werden, beachten Sie Folgendes:If you use FILESTREAM columns in tables that are published for transactional replication, note the following considerations:

  • 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.If any tables include columns that have the FILESTREAM attribute, you cannot use values of database snapshot or database snapshot character for the @sync_method property of sp_addpublication.

  • 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.The max text repl size option specifies the maximum amount of data that can be inserted into a column that is published for replication. Diese Option kann verwendet werden, um die Größe von FILESTREAM-Daten zu kontrollieren, die repliziert werden.This option can be used to control the size of FILESTREAM data that is replicated.

  • 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.If you specify the schema option to replicate the FILESTREAM attribute, but you filter out the uniqueidentifier column that FILESTREAM requires or you specify not to replicate the UNIQUE constraint for the column, replication does not replicate the FILESTREAM attribute. Die Spalte wird nur als varbinary(max) -Spalte repliziert.The column is replicated only as a varbinary(max) column.

Überlegungen hinsichtlich der MergereplikationConsiderations for Merge Replication

Wenn Sie FILESTREAM-Spalten in Tabellen verwenden, die zur Mergereplikation veröffentlicht werden, beachten Sie Folgendes:If you use FILESTREAM columns in tables that are published for merge replication, note the following considerations:

  • Sowohl die Mergereplikation als auch FILESTREAM erfordern eine Spalte des Datentyps uniqueidentifier , um die einzelnen Zeilen in einer Tabelle zu identifizieren.Both merge replication and FILESTREAM require a column of data type uniqueidentifier to identify each row in a table. Die Mergereplikation fügt automatisch eine Spalte hinzu, wenn die Tabelle sie nicht besitzt.Merge replication automatically adds a column if the table does not have one. Die Mergereplikation erfordert es, dass die ROWGUIDCOL-Eigenschaft für die Spalte festgelegt ist und der Standardwert NEWID() oder NEWSEQUENTIALID() lautet.Merge replication requires that the column have the ROWGUIDCOL property set and a default of NEWID() or NEWSEQUENTIALID(). Zusätzlich zu diesen Anforderungen erfordert es FILESTREAM, dass eine UNIQUE-Einschränkung für die Spalte definiert wird.In addition to these requirements, FILESTREAM requires that a UNIQUE constraint be defined for the column. Diese Anforderungen bringen Folgendes mit sich:These requirements have the following consequences:

    • 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.If you add a FILESTREAM column to a table that is already published for merge replication, make sure that the uniqueidentifier column has a UNIQUE constraint. Wenn sie über keine UNIQUE-Einschränkung verfügt, fügen Sie der Tabelle in der Veröffentlichungsdatenbank eine benannte Einschränkung hinzu.If it does not have a UNIQUE constraint, add a named constraint to the table in the publication database. Standardmäßig veröffentlicht die Mergreplikation diese Schemaänderung, die dann auf jede Abonnentendatenbank angewendet wird.By default, merge replication will publish this schema change, and it will be applied to each subscription database.

      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.If you add a UNIQUE constraint manually as described and you want to remove merge replication, you must first remove the UNIQUE constraint; otherwise, replication removal will fail.

    • Standardmäßig verwendet die Mergereplikation NEWSEQUENTIALID(), da ihre Leistungsfähigkeit gegenüber NEWID() höher ist.By default, merge replication uses NEWSEQUENTIALID() because it can provide better performance than NEWID(). Wenn Sie eine uniqueidentifier -Spalte einer Tabelle hinzufügen, die für die Mergereplikation veröffentlicht wird, geben Sie NEWSEQUENTIALID() als Standardwert an.If you add a uniqueidentifier column to a table that will be published for merge replication, specify NEWSEQUENTIALID() as the default.

  • Die Mergereplikation schließt eine Optimierung zum Replizieren von Typen großer Objekte ein.Merge replication includes an optimization for replicating large object types. Diese Optimierung wird durch den @stream_blob_columns-Parameter von sp_addmergearticle gesteuert.This optimization is controlled by the @stream_blob_columns parameter of sp_addmergearticle. Wenn Sie die Schemaoption auf die Replikation des FILESTREAM-Attributs festlegen, wird der Wert des @stream_blob_columns-Parameters auf TRUE festgelegt.If you set the schema option to replicate the FILESTREAM attribute, the @stream_blob_columns parameter value is set to true. Diese Optimierung kann mit sp_changemergearticleüberschrieben werden.This optimization can be overridden by using sp_changemergearticle. Mit dieser gespeicherten Prozedur können Sie @stream_blob_columns auf FALSE festlegen.This stored procedure enables you to set @stream_blob_columns to false. 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.If you add a FILESTREAM column to a table that is already published for merge replication, we recommend that you set the option to true by using sp_changemergearticle.

  • 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.Enabling the schema option for FILESTREAM after an article is created can cause replication to fail if the data in a FILESTREAM column exceeds 2 GB and there is a conflict during replication. 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.If you expect this situation to arise, it is recommended that you drop and re-create the table article with the appropriate FILESTREAM schema option enabled at creation time.

  • Die Mergereplikation kann FILESTREAM-Daten über eine HTTPS-Verbindung durch Websynchronisierungsynchronisieren.Merge replication can synchronize FILESTREAM data over an HTTPS connection by using Web Synchronization. Diese Daten dürfen die 50 MB-Grenze für die Websynchronisierung nicht übersteigen, andernfalls wird ein Laufzeitfehler generiert.This data cannot exceed the 50 MB limit for Web Synchronization; otherwise, a run-time error is generated.

ProtokollversandLog Shipping

DerProtokollversand unterstützt FILESTREAM.Log shipping supports FILESTREAM. Sowohl auf dem primären als auch auf dem sekundären Server muss SQL Server 2008SQL Server 2008oder eine spätere Version ausgeführt werden und FILESTREAM aktiviert sein.Both the primary and secondary servers must be running SQL Server 2008SQL Server 2008, or a later version, and have FILESTREAM enabled.

DatenbankspiegelungDatabase Mirroring

FILESTREAM wird von der Datenbankspiegelung nicht unterstützt.Database mirroring does not support FILESTREAM. Eine FILESTREAM-Dateigruppe kann nicht auf dem Prinzipalserver erstellt werden.A FILESTREAM filegroup cannot be created on the principal server. Die Datenbankspiegelung kann nicht für eine Datenbank konfiguriert werden, die FILESTREAM-Dateigruppen enthält.Database mirroring cannot be configured for a database that contains FILESTREAM filegroups.

VolltextindizierungFull-Text Indexing

DieVolltextindizierung funktioniert mit einer FILESTREAM-Spalte genauso wie mit einer varbinary(max) -Spalte.Full-text indexing works with a FILESTREAM column in the same way that it does with a varbinary(max) column. Die FILESTREAM-Tabelle muss eine Spalte aufweisen, die die Dateinamenerweiterung für jeden FILESTREAM BLOB enthält.The FILESTREAM table must have a column that contains the file name extension for each FILESTREAM BLOB. Weitere Informationen finden Sie unter Abfragen 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).

Das Volltextmodul indiziert den Inhalt der FILESTREAM-BLOBs.The full-text engine indexes the contents of the FILESTREAM BLOBs. Dateien wie beispielsweise Images zu indizieren, ist möglicherweise nicht nützlich.Indexing files such as images might not be useful. Wenn ein FILESTREAM BLOB aktualisiert wird, wird er neu indiziert.When a FILESTREAM BLOB is updated it is reindexed.

FailoverclusteringFailover Clustering

Für das Failoverclustering müssen FILESTREAM-Dateigruppen auf einem freigegebenen Datenträger abgelegt werden.For failover clustering, FILESTREAM filegroups must be put on a shared disk. FILESTREAM muss auf jedem Knoten im Cluster aktiviert werden, das die FILESTREAM-Instanz hostet.FILESTREAM must be enabled on each node in the cluster that will host the FILESTREAM instance. Weitere Informationen finden Sie unter Einrichten von FILESTREAM auf einem Failovercluster.For more information, see Set Up FILESTREAM on a Failover Cluster.

SQL Server ExpressSQL Server Express

SQL Server ExpressSQL Server Express unterstützt FILESTREAM. supports FILESTREAM. Im Grenzwert für die Datenbankgröße von 10 GB ist der FILESTREAM-Datencontainer nicht inbegriffen.The 10-GB database size limit does not include the FILESTREAM data container.

Eigenständige DatenbankenContained Databases

Die FILESTREAM-Funktion erfordert etwas Konfiguration außerhalb der Datenbank.The FILESTREAM feature requires some configuration outside of the database. Daher sind Datenbanken, die FILESTREAM oder FileTable verwenden, nicht vollständig eigenständig.Therefore a database that uses FILESTREAM or FileTable is not fully contained.

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.You can set database containment to PARTIAL if you want to use certain features of contained databases, such as contained users. 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.In this case, however, you must be aware that some of the database settings are not contained in the database and are not automatically moved when the database moves.

Siehe auchSee Also

Binary Large Object (Blob) Daten (SQL Server)Binary Large Object (Blob) Data (SQL Server)