Partage via


FileTables (SQL Server)

S’applique à : SQL Server

La fonctionnalité FileTable apporte une prise en charge de l’espace de noms de fichier Windows et la compatibilité des applications Windows avec les données de fichier stockées dans SQL Server. FileTable permet à une application d'intégrer ses composants de stockage et de gestion des données, et fournit des services SQL Server intégrés (notamment la recherche sémantique et en texte intégral) sur des données et des métadonnées non structurées.

En d’autres termes, vous pouvez maintenant stocker des fichiers et des documents dans des tables spéciales dans SQL Server, appelées FileTables, mais y accéder à partir d’applications Windows comme si ils avaient été stockés dans le système de fichiers, sans apporter de modifications à vos applications clientes.

La fonctionnalité FileTable s’appuie sur la technologie SQL Server FILESTREAM. Pour en savoir plus sur FILESTREAM, consultez FILESTREAM (SQL Server).

Avantages de la fonctionnalité FileTable

Les objectifs de la fonctionnalité FileTable incluent les éléments suivants :

  • Compatibilité des API Windows pour les données de fichier stockées dans une base de données SQL Server. La compatibilité d'API Windows inclut ce qui suit :

    • Accès en continu non transactionnel et mises à jour sur place aux données FILESTREAM.

    • Espace de noms hiérarchique de répertoires et fichiers.

    • Stockage d'attributs de fichier, tels que la date de création et la date de modification.

    • Prise en charge des API de gestion de fichiers et de répertoires Windows.

  • Compatibilité avec d’autres fonctionnalités SQL Server notamment des outils de gestion, des services et des fonctions de requête relationnelles sur FILESTREAM et les données d’attribut de fichier.

Par conséquent, les FileTables mettent fin à un frein significatif à l’utilisation de SQL Server pour le stockage et la gestion de données non structurées qui résident actuellement sous la forme de fichiers sur des serveurs de fichiers. Les entreprises peuvent déplacer ces données depuis des serveurs de fichiers vers des FileTables afin de tirer parti des services et de l’administration intégrés fournis par SQL Server. En même temps, elles peuvent assurer la compatibilité d'applications Windows pour leurs applications Windows existantes qui considèrent ces données en tant que fichiers dans le système de fichiers.

Présentation d’un FileTable

SQL Server fournit une table de fichiersspéciale, également connue sous le nom de FileTable, pour les applications qui nécessitent un stockage de répertoires et de fichiers dans la base de données, avec la compatibilité avec les API Windows et un accès non transactionnel. Un FileTable est une table utilisateur spécialisée avec un schéma prédéfini qui stocke des données FILESTREAM, ainsi que des informations de hiérarchie de fichiers et de répertoires et d’attribut de fichier.

Un FileTable offre les fonctionnalités suivantes :

  • Un FileTable représente une hiérarchie de répertoires et de fichiers. Il stocke des données relatives à tous les nœuds de cette hiérarchie, à la fois pour les répertoires et les fichiers qu'ils contiennent. Cette hiérarchie démarre à partir d'un répertoire racine que vous spécifiez lors de la création du FileTable.

  • Chaque ligne d'un FileTable représente un fichier ou un répertoire.

  • Chaque ligne contient les éléments suivants. Pour plus d'informations sur le schéma d’un FileTable, consultez Schéma de FileTable.

    • Colonne file_stream pour les données de flux et identificateur stream_id (GUID). (La colonne file_stream a la valeur NULL pour un répertoire.)

    • Les colonnes path_locator et parent_path_locator pour la représentation et la maintenance de l’élément actif (fichier ou répertoire) et de la hiérarchie de répertoires.

    • 10 attributs de fichier tels que la date de création et la date de modification utiles avec les API d'E/S de fichier.

    • Une colonne de type qui prend en charge la recherche en texte intégral et la recherche sémantique sur les fichiers et les documents.

  • Un FileTable applique certains déclencheurs et contraintes définies par le système afin de gérer la sémantique de l'espace de noms de fichier.

  • Lorsque la base de données est configurée pour un accès non transactionnel, la hiérarchie de répertoires et de fichiers représentée dans le FileTable est exposée sous le partage FILESTREAM configuré pour l’instance de SQL Server. Cela fournit l'accès au système de fichiers pour les applications Windows.

Quelques caractéristiques supplémentaires des FileTables

  • Les données de fichier et de répertoire stockées dans un FileTable sont exposées via un partage Windows pour l'accès aux fichiers non transactionnel pour les applications basées sur des API Windows. Pour une application Windows, cela ressemble à un partage normal avec ses fichiers et répertoires. Les applications peuvent utiliser un ensemble complet d'API Windows pour gérer les fichiers et les répertoires sous ce partage.

  • La hiérarchie de répertoires exposée en surface via le partage est une structure de répertoires purement logique maintenue dans le FileTable.

  • Les appels pour créer ou modifier un fichier ou un répertoire via le partage Windows sont interceptés par un composant SQL Server et reflétés dans les données relationnelles correspondantes du FileTable.

  • Les opérations d’API Windows ne sont pas transactionnelles par nature et ne sont pas associées à des transactions utilisateur. Toutefois, l'accès transactionnel aux données FILESTREAM stockées dans un FileTable est entièrement pris en charge, comme c'est le cas pour toute colonne FILESTREAM d'une table standard. Si vous devez modifier fréquemment des fichiers à partir de plusieurs connexions et garantir une protection de fichiers appropriée, utilisez l’accès FILESTREAM transactionnel via OpenSqlFilestream(), plutôt que des verrouillages de fichiers exclusifs au niveau de l’API Windows.

  • Les FileTables peuvent également être interrogés et mis à jour via un accès Transact-SQL normal. Ils sont également intégrés aux outils de gestion SQL Server et à des fonctionnalités telles que la sauvegarde.

  • Vous ne pouvez pas envoyer une requête par courrier électronique via Database Mail et joindre un fichier situé dans un répertoire FILESTREAM (et par conséquent Filetable). Le pilote de filtre de système de fichiers RsFx0420 inspecte les requêtes d’E/S entrantes entrant et sortant du dossier FILESTREAM. Si la requête ne provient pas de l’exécutable SQL Server et du code FILESTREAM, elle est explicitement rejetée.

Remarques supplémentaires concernant l’utilisation de FileTables

Considérations d’ordre administratif

À propos de FILESTREAM et des FileTables

Vous configurez des FileTables de manière distincte de FILESTREAM. Par conséquent, vous pouvez continuer à utiliser la fonctionnalité FILESTREAM sans activer l'accès non transactionnel ou créer de FileTables.

Il n'existe aucun accès non transactionnel aux données FILESTREAM sauf via des FileTables. Par conséquent, lorsque vous activez l’accès non transactionnel, le comportement des applications et des colonnes FILESTREAM existantes n’est pas affecté.

À propos de FileTables et de l'accès non transactionnel

Vous pouvez activer ou désactiver l'accès non transactionnel au niveau de la base de données.

Vous pouvez configurer ou définir avec précision l'accès non transactionnel au niveau de la base de données en le désactivant, ou en activant l'accès en lecture seule ou l'accès en lecture/écriture intégral.

Les FileTables ne prennent pas en charge les fichiers mappés en mémoire.

Les FileTables ne prennent pas en charge les fichiers mappés en mémoire. Les applications Bloc-notes et Peinture sont deux exemples classiques d'applications qui utilisent les fichiers mappés en mémoire. Vous ne pouvez pas utiliser ces applications sur le même ordinateur que SQL Server pour ouvrir des fichiers stockés dans un FileTable. Toutefois, vous pouvez utiliser ces applications à partir d’un ordinateur distant afin d’ouvrir des fichiers stockés dans un FileTable, car dans ces circonstances, la fonctionnalité de mappage en mémoire n’est pas utilisée.