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
Livre blanc Sécurité et Stockage des documents
Découvrez dans ce livre blanc Kyocera les outils logiciels qui permettent une approche holistique et efficace de la collecte, du stockage, de la gestion et de la sécurisation des documents en entreprise.