FileTables (SQL Server)

S’applique à :SQL Server

La fonctionnalité FileTable prend en charge l’espace de noms de fichiers Windows et la compatibilité avec les applications Windows aux 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 stocker des fichiers et des documents dans des tables spéciales dans SQL Server appelé FileTables, mais y accéder à partir d’applications Windows comme s’ils étaient stockés dans le système de fichiers, sans apporter de modifications à vos applications clientes.

La fonctionnalité FileTable s’appuie sur la technologie FILESTREAM SQL Server. 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é de l’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 les outils de gestion, les services et les fonctionnalités de requête relationnelle sur les données d’attribut de fichier et FILESTREAM.

Ainsi, les FileTables suppriment un obstacle important à l’utilisation de SQL Server pour le stockage et la gestion des données non structurées qui résident actuellement en tant que fichiers sur des serveurs de fichiers. Les entreprises peuvent déplacer ces données de serveurs de fichiers vers FileTables pour tirer parti de l’administration et des services 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.

Qu’est-ce qu’un FileTable ?

SQL Server fournit une table spéciale de fichiers, également appelée FileTable, pour les applications qui nécessitent un stockage de fichiers et de répertoires dans la base de données, avec une compatibilité de l’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 les données FILESTREAM, ainsi que les informations de hiérarchie de fichiers et de répertoires et les attributs 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 un stream_id identificateur (GUID). (La colonne a la file_stream valeur NULL pour un répertoire.)

    • Les deux path_locator et parent_path_locator les colonnes pour représenter et gérer l’élément actif (fichier ou répertoire) et 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 l’accès non transactionnel, la hiérarchie de fichiers et de répertoires représentée dans fileTable est exposée sous le partage FILESTREAM configuré pour l’instance SQL Server. Cela fournit l'accès au système de fichiers pour les applications Windows.

Certaines caractéristiques supplémentaires de 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 dans fileTable.

  • Les opérations d’API Windows ne sont pas transactionnelles et ne sont pas associées aux 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 verrous de fichiers exclusifs au niveau de l’API Windows.

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

  • Vous ne pouvez pas envoyer de demande par e-mail via la messagerie de base de données et joindre un fichier situé dans un répertoire FILESTREAM (et par conséquent FileTable). Le pilote de filtre du système de fichiers RsFx0420 inspecte les requêtes d’E/S entrantes entrantes et sortantes du dossier FILESTREAM. Si la requête n’est pas à la fois de l’exécutable SQLServer et du code FILESTREAM, elles sont explicitement interdites.

Considérations supplémentaires relatives à 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 colonnes ET applications 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 pour ouvrir des fichiers stockés dans un FileTable, car dans ces circonstances, la fonctionnalité de mappage de mémoire n’est pas utilisée.