Partager via


Compatibilité FILESTREAM avec d’autres fonctionnalités SQL Server

Étant donné que les données FILESTREAM se situent dans le système de fichiers, cette rubrique fournit des considérations, des instructions et des limitations relatives à l’utilisation de FILESTREAM avec les fonctionnalités suivantes dans SQL Server :

SQL Server Integration Services (SSIS)

SQL Server Integration Services (SSIS) gère les données FILESTREAM dans le flux de données comme toutes les autres données BLOB à l’aide du type de données SSIS DT_IMAGE.

Vous pouvez utiliser la transformation 'Importer une colonne' pour importer des fichiers depuis le système de fichiers dans une colonne FILESTREAM. Vous pouvez également utiliser la transformation Exporter la colonne pour extraire des fichiers d’une colonne FILESTREAM vers un autre emplacement dans le système de fichiers.

Requêtes distribuées et serveurs liés

Vous pouvez utiliser des données FILESTREAM via des requêtes distribuées et des serveurs liés en les traitant comme varbinary(max) des données. Vous ne pouvez pas utiliser la fonction FILESTREAM PathName() dans les requêtes distribuées qui utilisent un nom en quatre parties, même lorsque le nom fait référence au serveur local. Toutefois, vous pouvez utiliser PathName() dans la requête interne d’une requête directe qui utilise OPENQUERY().

Chiffrement

Les données FILESTREAM ne sont pas chiffrées même lorsque le chiffrement transparent des données est activé.

Instantanés de base de données

SQL Server ne prend pas en charge les instantanés de base de données pour les groupes de fichiers FILESTREAM. Si un groupe de fichiers FILESTREAM est inclus dans une clause CREATE DATABASE ON, l’instruction échoue et une erreur est générée.

Lorsque vous utilisez FILESTREAM, vous pouvez créer des instantanés de base de données de groupes de fichiers standard (non-FILESTREAM). Les groupes de fichiers FILESTREAM sont marqués comme hors connexion pour ces instantanés de base de données.

Une instruction SELECT exécutée sur une table FILESTREAM dans un instantané de base de données ne doit pas inclure de colonne FILESTREAM ; sinon, le message d’erreur suivant est retourné :

Could not continue scan with NOLOCK due to data movement.

Réplication

Une varbinary(max) colonne sur laquelle l’attribut FILESTREAM est activé sur le serveur de publication peut être répliquée sur un Abonné avec ou sans l’attribut FILESTREAM. Pour spécifier la façon dont la colonne est répliquée, utilisez la boîte de dialogue Propriétés de l’article - <Boîte de dialogue Article> ou paramètre @schema_option de sp_addarticle ou sp_addmergearticle. Les données répliquées dans une varbinary(max) colonne qui n’ont pas l’attribut FILESTREAM ne doivent pas dépasser la limite de 2 Go pour ce type de données ; sinon, une erreur d’exécution est générée. Nous vous recommandons de répliquer l’attribut FILESTREAM, sauf si vous comptez répliquer des données vers des abonnés SQL Server 2000, car cela n’est pas pris en charge, quelle que soit l’option de schéma spécifiée.

Remarque

La réplication de valeurs de données volumineuses de SQL Server 2014 vers SQL Server 2005 (9,x) Abonnés est limitée à un maximum de 256 Mo de valeurs de données. Pour plus d’informations, consultez Spécifications de capacité maximale.

Considérations relatives à la réplication transactionnelle

Si vous utilisez des colonnes FILESTREAM dans des tables publiées pour la réplication transactionnelle, notez les considérations suivantes :

  • Si des tables incluent des colonnes possédant l'attribut FILESTREAM, vous ne pouvez pas utiliser de valeurs d’instantané de base de données ou de caractère d’instantané de base de données pour la propriété @sync_method de sp_addpublication.

  • L’option max text repl size spécifie la quantité maximale de données pouvant être insérées dans une colonne publiée pour la réplication. Cette option peut être utilisée pour contrôler la taille des données FILESTREAM répliquées.

  • Si vous spécifiez l’option de schéma pour répliquer l’attribut FILESTREAM, mais que vous filtrez la uniqueidentifier colonne que FILESTREAM requiert ou que vous spécifiez de ne pas répliquer la contrainte UNIQUE pour la colonne, la réplication ne réplique pas l’attribut FILESTREAM. La colonne est répliquée uniquement en tant que varbinary(max) colonne.

Considérations pour la réplication par fusion

Si vous utilisez des colonnes FILESTREAM dans des tables publiées pour la réplication de fusion, notez les considérations suivantes :

  • La réplication de fusion et FILESTREAM nécessitent une colonne de type uniqueidentifier de données pour identifier chaque ligne d’une table. La réplication de fusion ajoute automatiquement une colonne si la table n’en a pas. La réplication de fusion nécessite que la colonne ait la propriété ROWGUIDCOL définie et une valeur par défaut de NEWID() ou NEWSEQUENTIALID(). En plus de ces exigences, FILESTREAM exige qu’une contrainte UNIQUE soit définie pour la colonne. Ces exigences ont les conséquences suivantes :

    • Si vous ajoutez une colonne FILESTREAM à une table déjà publiée pour la réplication de fusion, vérifiez que la uniqueidentifier colonne a une contrainte UNIQUE. S’il n’a pas de contrainte UNIQUE, ajoutez une contrainte nommée à la table dans la base de données de publication. Par défaut, la réplication de fusion publiera cette modification de schéma et elle sera appliquée à chaque base de données d’abonnement.

      Si vous ajoutez une contrainte UNIQUE manuellement comme décrit et que vous souhaitez supprimer la réplication de fusion, vous devez d’abord supprimer la contrainte UNIQUE ; sinon, la suppression de la réplication échoue.

    • Par défaut, la réplication de fusion utilise NEWSEQUENTIALID() car elle peut fournir de meilleures performances que NEWID(). Si vous ajoutez une uniqueidentifier colonne à une table qui sera publiée pour la réplication de fusion, spécifiez NEWSEQUENTIALID() comme valeur par défaut.

  • La réplication de fusion inclut une optimisation pour la réplication de types d’objets volumineux. Cette optimisation est contrôlée par le @stream_blob_columns paramètre de sp_addmergearticle. Si vous définissez l’option de schéma pour répliquer l’attribut FILESTREAM, la valeur du paramètre @stream_blob_columns est définie sur true. Cette optimisation peut être remplacée en utilisant sp_changemergearticle. Cette procédure stockée vous permet de définir @stream_blob_columns sur false. Si vous ajoutez une colonne FILESTREAM à une table déjà publiée pour la réplication de fusion, nous vous recommandons de définir l’option à true l’aide de sp_changemergearticle.

  • L’activation de l’option de schéma pour FILESTREAM après la création d’un article peut entraîner l’échec de la réplication si les données d’une colonne FILESTREAM dépassent 2 Go et qu’il existe un conflit pendant la réplication. Si vous vous attendez à ce que cette situation se produise, il est recommandé de supprimer et de recréer l’article de table avec l’option de schéma FILESTREAM appropriée activée au moment de la création.

  • La réplication de fusion peut synchroniser les données FILESTREAM via une connexion HTTPS à l’aide de la synchronisation web. Ces données ne peuvent pas dépasser la limite de 50 Mo pour la synchronisation web ; sinon, une erreur d’exécution est générée.

Expédition de journaux

L'expédition de journaux prend en charge FILESTREAM. Les serveurs principaux et secondaires doivent exécuter SQL Server 2008 ou une version ultérieure et avoir FILESTREAM activé.

Mise en miroir de bases de données

La mise en miroir de bases de données ne prend pas en charge FILESTREAM. Impossible de créer un groupe de fichiers FILESTREAM sur le serveur principal. Impossible de configurer la mise en miroir de bases de données pour une base de données qui contient des groupes de fichiers FILESTREAM.

Full-Text Indexation

L’indexation de texte intégral fonctionne avec une colonne FILESTREAM de la même façon qu’avec une varbinary(max) colonne. La table FILESTREAM doit avoir une colonne qui contient l’extension de nom de fichier pour chaque objet BLOB FILESTREAM. Pour plus d’informations, consultez Requête avec Full-Text Recherche, Configurer et gérer des filtres pour la recherche et sys.fulltext_document_types (Transact-SQL).

Le moteur de recherche en texte intégral indexe le contenu des BLOBs FILESTREAM. L’indexation de fichiers tels que des images peut ne pas être utile. Lorsqu’un OBJET BLOB FILESTREAM est mis à jour, il est réindexé.

Clustering de basculement

Pour le clustering de basculement, il est essentiel que les groupes de fichiers FILESTREAM soient placés sur un disque partagé. FILESTREAM doit être activé sur chaque nœud du cluster qui hébergera l’instance FILESTREAM. Pour plus d’informations, référez-vous à Configurer FILESTREAM sur un cluster de basculement.

SQL Server Express

SQL Server Express prend en charge FILESTREAM. La limite de taille de base de données de 10 Go n’inclut pas le conteneur de données FILESTREAM.

Bases de données autonomes

La fonctionnalité FILESTREAM nécessite une configuration en dehors de la base de données. Par conséquent, une base de données qui utilise FILESTREAM ou FileTable n’est pas entièrement contenue.

Vous pouvez définir le contenu de la base de données sur PARTIAL si vous souhaitez utiliser certaines fonctionnalités des bases de données contenues, telles que les utilisateurs contenus. Dans ce cas, toutefois, vous devez savoir que certains des paramètres de base de données ne sont pas contenus dans la base de données et ne sont pas déplacés automatiquement lorsque la base de données se déplace.

Voir aussi

Données blob (Binary Large Object) (SQL Server)