La base de données qui va recevoir les données FILESTREAM doit être configurée en conséquence.
Filestream : Configuration de la base de données

Tout d’abord, elle doit contenir au moins un Filegroup défini comme pouvant héberger les données FILESTREAM. Ce Filegroup est créé de la même manière que les Filegroups classiques, mais avec l’ajout de la clause CONTAINS FILESTREAM.
Filstream
En revanche, à l’inverse des autres Filegroups, celui-ci ne contiendra pas de fichiers de données (type NDF) mais plutôt un chemin vers l’emplacement du FileSystem qui hébergera les documents. Les notions de taille de fichier, pas de croissance de fichier, etc… n’ont donc pas lieu d’être dans ce cas. Lors de la définition de cet emplacement, tous les répertoires, sauf le dernier mentionné, doivent avoir été préalablement créés. A noter que depuis SQL Server 2012, il est possible de définir la MAXSIZE du data container et de définir plusieurs emplacements FILESTREAM dans un seul Filegroup.
Par ailleurs, le dossier cible doit se trouver sur un système de fichier de type NTFS, FILESTREAM n’étant pas supporté sur les autres types de système de fichiers (FAT, FAT32, et même ReFS, nouveau FileSystem Windows 2012 qui n’est aujourd’hui pas pris en charge par SQL Server 2012).
J’ajouterai enfin qu’il est tout à fait possible d’activer la compression NTFS sur le système de fichier hébergeant les fichiers FILESTREAM, permettant ainsi des gains de places substantiels.
Exemple :
CREATE DATABASE DB_FILESTREAM
ON
PRIMARY (NAME = DB_FILESTREAM_Data01,
FILENAME = ‘D:\MSSQL\Data\DB_FILESTREAM_Data01.
mdf’),
FILEGROUP FG1_FILESTREAM CONTAINS FILESTREAM DEFAULT(NAME =
FS1_DB_FILESTREAM,
FILENAME = ‘D:\MSSQL\FILESTREAM1’),
FILEGROUP FG2_FILESTREAM CONTAINS FILESTREAM (NAME = FS2_
DB_FILESTREAM,
FILENAME = ‘D:\MSSQL\FILESTREAM2’)
LOG ON (NAME = DB_FILESTREAM_Tlog,
FILENAME = ‘D:\MSSQL\Tlog\DB_FILESTREAM_Tlog01.
ldf’);
Dans l’exemple ci-dessus, le chemin D:\MSSQL doit exister mais les dossiers finaux FILESTREAM1 et FILESTREAM2 seront créés par le moteur lui-même.
Un coup d’oeil sur la vue système sys.database_files nous montre le type de chaque fichier (voir tableau ci-dessous).
name | type | type_desc | physical_name |
DB_FILESTREAM_Data01 | 0 | ROWS | D:\MSSQL\Data\DB_ FILESTREAM_Data01.mdf |
DB_FILESTREAM_Tlog | 1 | LOG | D:\MSSQL\Tlog\DB_ FILESTREAM_Tlog01.ldf |
FS1_DB_FILESTREAM | 2 | FILESTREAM | OD:\MSSQL\FILESTREAM1 |
FS2_DB_FILESTREAM | 2 | FILESTREAM | D:\MSSQL\FILESTREAM2 |
select name, type, type_desc, physical_name from sys.database_files
Nous avons maintenant une base prête à accueillir des données FILESTREAM, voyons maintenant comment créer les tables qui contiendront les données à proprement parler.
Téléchargez cette ressource

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Les risques liés à l’essor fulgurant de l’IA générative
- Pourquoi est-il temps de repenser la gestion des vulnérabilités ?
- Reporting RSE : un levier d’innovation !
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
