Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Décrit comment créer un FileTable, ou modifier ou supprimer un FileTable existant.
Création d’un FileTable
Un FileTable est une table utilisateur spécialisée qui a un schéma prédéfinis et fixe. Ce schéma stocke les données FILESTREAM, les informations de fichier et de répertoire et les attributs de fichier. Pour plus d’informations sur le schéma FileTable, consultez FileTable Schema.
Vous pouvez créer un FileTable à l’aide de Transact-SQL ou de SQL Server Management Studio. Étant donné qu’un FileTable a un schéma fixe, vous n’avez pas besoin de spécifier une liste de colonnes. La syntaxe simple pour la création d’un FileTable vous permet de spécifier :
Nom d’un répertoire. Dans la hiérarchie des dossiers FileTable, ce répertoire de niveau table devient l’enfant du répertoire de base de données spécifié au niveau de la base de données et le parent des fichiers ou répertoires stockés dans la table.
Nom du classement à utiliser pour les noms de fichiers dans la colonne Nom du FileTable.
Noms à utiliser pour la clé primaire 3 et les contraintes uniques créées automatiquement.
Guide pratique pour créer un FileTable
Créer un FileTable à l’aide de Transact-SQL
Créez un FileTable en appelant l’instruction CREATE TABLE (Transact-SQL) avec l’option AS FileTable . Étant donné qu’un FileTable a un schéma fixe, vous n’avez pas besoin de spécifier une liste de colonnes. Vous pouvez spécifier les paramètres suivants pour le nouveau FileTable :
FILETABLE_DIRECTORY. Spécifie le répertoire qui sert de répertoire racine pour tous les fichiers et répertoires stockés dans fileTable. Ce nom doit être unique parmi tous les noms de répertoire FileTable de la base de données. La vérification de l'unicité est insensible à la casse, quels que soient les paramètres de classement actuels.
Cette valeur a un type de données nvarchar(255) et utilise un classement fixe de Latin1_General_CI_AS_KS_WS.
Le nom de répertoire que vous fournissez doit se conformer aux configurations requises du système de fichiers concernant les noms de répertoire valides.
Ce nom doit être unique parmi tous les noms de répertoire FileTable de la base de données. La comparaison de l’unicité ne prend pas en compte la casse, quels que soient les paramètres de tri actuels.
Si vous ne fournissez pas de nom de répertoire lorsque vous créez le FileTable, le nom du FileTable lui-même est utilisé comme nom de répertoire.
FILETABLE_COLLATE_FILENAME. Spécifie le nom du classement à appliquer à la colonne Name dans fileTable.
Le tri spécifié doit être insensible à la casse pour se conformer à la sémantique de nommage de fichiers Windows.
Si vous ne fournissez pas de valeur pour FILETABLE_COLLATE_FILENAME, ou si vous spécifiez database_default, la colonne hérite du classement de la base de données active. Si le tri de la base de données actuel est sensible à la casse, une erreur est générée et l’opération CREATE TABLE échoue.
Vous pouvez également spécifier les noms à utiliser pour la clé primaire 3 et les contraintes uniques créées automatiquement. Si vous ne fournissez pas de noms, le système génère des noms comme décrit plus loin dans cette rubrique.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Exemples
L’exemple suivant crée un FileTable et spécifie des valeurs définies par l’utilisateur pour FILETABLE_DIRECTORY et FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FileTable
WITH (
FileTable_Directory = 'DocumentTable',
FileTable_Collate_Filename = database_default
);
GO
L’exemple suivant crée également un FileTable. Étant donné que les valeurs définies par l’utilisateur ne sont pas spécifiées, la valeur de FILETABLE_DIRECTORY devient le nom du FileTable, la valeur de FILETABLE_COLLATE_FILENAME devient database_default, et la clé primaire et les noms uniques reçoivent des noms générés par le système.
CREATE TABLE DocumentStore AS FileTable;
GO
Créer un FileTable à l’aide de SQL Server Management Studio
Dans l’Explorateur d’objets, développez les objets sous la base de données sélectionnée, cliquez avec le bouton droit sur le dossier Tables , puis sélectionnez Nouveau FileTable.
Cette option ouvre une nouvelle fenêtre de script qui contient un modèle de script Transact-SQL que vous pouvez personnaliser et exécuter pour créer un FileTable. Utilisez l’option Spécifier des valeurs pour les paramètres de modèle dans le menu Requête pour personnaliser facilement le script.
Conditions requises et restrictions pour la création d’un FileTable
Vous ne pouvez pas modifier une table existante pour la convertir en FileTable.
Le répertoire parent précédemment spécifié au niveau de la base de données doit avoir une valeur non null. Pour plus d’informations sur la spécification du répertoire au niveau de la base de données, consultez Activer les prérequis pour FileTable.
Un FileTable nécessite un groupe de fichiers FILESTREAM valide, car un FileTable contient une colonne FILESTREAM. Vous pouvez éventuellement spécifier un groupe de fichiers FILESTREAM valide dans le cadre de la commande CREATE TABLE pour la création d’un FileTable. Si vous ne spécifiez pas de groupe de fichiers, fileTable utilise le groupe de fichiers FILESTREAM par défaut pour la base de données. Si la base de données n’a pas de groupe de fichiers FILESTREAM, une erreur est générée.
Vous ne pouvez pas créer une contrainte de table dans une instruction CREATE TABLE... AS FILETABLE. Toutefois, vous pouvez ajouter la contrainte ultérieurement à l’aide d’une instruction ALTER TABLE .
Vous ne pouvez pas créer un FileTable dans la base de données tempdb ou dans l’une des autres bases de données système.
Vous ne pouvez pas créer un FileTable en tant que table temporaire.
Modification d’un FileTable
Étant donné qu’un FileTable a un schéma prédéfinis et fixe, vous ne pouvez pas ajouter ou modifier ses colonnes. Toutefois, vous pouvez ajouter des index personnalisés, des déclencheurs, des contraintes et d’autres options à un FileTable.
Pour plus d’informations sur l’utilisation de l’instruction ALTER TABLE pour activer ou désactiver l’espace de noms FileTable, y compris les contraintes définies par le système, consultez Gérer les FileTables.
Guide pratique pour modifier le répertoire d’un FileTable
Modifier le répertoire d’un FileTable à l’aide de Transact-SQL
Appelez l’instruction ALTER TABLE et fournissez une nouvelle valeur valide pour l’option SET FILETABLE_DIRECTORY .
Exemple
ALTER TABLE filetable_name
SET ( FILETABLE_DIRECTORY = N'directory_name' );
GO
Modifier le répertoire d’un FileTable à l’aide de SQL Server Management Studio
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur FileTable et sélectionnez Propriétés pour ouvrir la boîte de dialogue Propriétés de la table . Dans la page FileTable , entrez une nouvelle valeur pour le nom du répertoire FileTable.
Conditions requises et restrictions pour la modification d’un FileTable
Vous ne pouvez pas modifier la valeur de FILETABLE_COLLATE_FILENAME.
Vous ne pouvez pas modifier, supprimer ou désactiver les colonnes définies par le système d’un FileTable.
Vous ne pouvez pas ajouter de nouvelles colonnes utilisateur, des colonnes calculées ou des colonnes calculées persistantes à un FileTable.
Suppression d’un FileTable
Vous pouvez supprimer un FileTable à l’aide de la syntaxe ordinaire de l’instruction DROP TABLE (Transact-SQL).
Lorsque vous supprimez un FileTable, les objets suivants sont également supprimés :
Toutes les colonnes de FileTable et tous les objets associés à la table, tels que les index, les contraintes et les déclencheurs, sont également supprimés.
Le répertoire FileTable et les sous-répertoires qu’il contenait disparaissent de la hiérarchie de fichiers et de répertoires FILESTREAM de la base de données.
La commande DROP TABLE échoue s’il existe des handles de fichiers ouverts dans l’espace de noms de fichier de FileTable. Pour plus d’informations sur la fermeture des handles ouverts, consultez Gérer les FileTables.
D’autres objets de base de données sont créés lorsque vous créez un FileTable
Lorsque vous créez un FileTable, certains index et contraintes définis par le système sont également créés. Vous ne pouvez pas modifier ou supprimer ces objets ; ils disparaissent uniquement lorsque le FileTable lui-même est supprimé. Pour afficher la liste de ces objets, interrogez l’affichage catalogue sys.filetable_system_defined_objects (Transact-SQL).
--View all objects for all filetables, unsorted
SELECT * FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Index créés lors de la création d’un FileTable
Lorsque vous créez un FileTable, les index définis par le système suivants sont également créés :
| Colonnes | Type d’index |
| [path_locator] ASC | Clé primaire, non cluster |
| [parent_path_locator] ASC, [name] ASC |
Unique, non clusterisé |
| [stream_id] ASC | Unique, non-clusterisé |
Contraintes créées lors de la création d’un FileTable
Lorsque vous créez un FileTable, les contraintes définies par le système suivantes sont également créées :
| Contraintes | Fait respecter |
|---|---|
| Contraintes par défaut sur les colonnes suivantes : creation_time is_archive is_directory is_hidden is_offline is_readonly is_system is_temporary heure_dernière_utilisation last_write_time path_locator stream_id |
Les contraintes par défaut définies par le système appliquent les valeurs par défaut pour les colonnes spécifiées. |
| Vérifier les contraintes | Les contraintes de vérification définies par le système appliquent les exigences suivantes : Noms de fichiers valides. Attributs de fichier valides. L’objet parent doit être un répertoire. La hiérarchie d’espaces de noms est verrouillée pendant la manipulation de fichiers. |
Convention d’affectation de noms pour les contraintes définies par le système
Les contraintes définies par le système décrites ci-dessus sont nommées au format <constraintType>_<tablename[_<columnname>>]_<uniquifier> où :
< >constraint_type est CK (contrainte de vérification), DF (contrainte par défaut), FK (clé étrangère), PK (clé primaire) ou UQ (contrainte unique).
<uniquifier> est une chaîne générée par le système pour rendre le nom unique. Cette chaîne peut contenir le nom fileTable et un identificateur unique.