Avez-vous déjà pensé que votre serveur SQL pouvait fonctionner comme un serveur de fichiers? Il y a de fortes chances que vous ne l’ayez pas fait – moi non plus jusqu’à ce que j’essaie une fonctionnalité de table de fichiers introduite pour la première fois dans SQL Server 2012. La fonctionnalité FileTable est la prochaine étape de la technologie FILESTREAM qui vous permet de stocker des fichiers et des dossiers dans les tables spéciales, mais d’y accéder à l’aide du protocole SMB traditionnel de Windows – les utilisateurs peuvent créer / lire / modifier / supprimer des fichiers à partir d’un partage de fichiers générique sans même connaître les commandes SQL sous-jacentes. En d’autres termes, les tables de fichiers nous permettent d’utiliser des tables SQL pour un accès non transactionnel.
À mon avis, l’un des plus grands avantages de la fonctionnalité FileTables est le stockage des attributs de fichier (tels que Last-WriteTime, Last_AccessTime, etc.) qui permet aux administrateurs d’auditer les opérations d’accès aux fichiers à l’aide des colonnes correspondantes dans les tables de fichiers. Dans cet article, je voudrais vous montrer comment SQL Server 2012-2016 peut être utilisé pour le stockage de fichiers et quels mécanismes d’audit peuvent être utilisés pour les fichiers et les dossiers résidant dans les partages de fichiers SQL. Certaines conditions préalables doivent être remplies avant que les Tables de fichiers puissent être créées dans une base de données et nous allons passer en revue toutes les étapes nécessaires à la préparation des Tables de fichiers, puis créer plusieurs tables et voir comment nous pouvons travailler avec elles.
Commençons par activer le FLUX de FICHIERS pour l’instance SQL 2012 et créer une nouvelle base de données de FLUX de FICHIERS :
https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx
J’active le FLUX de fichiers au niveau Windows
- Ouvrez le gestionnaire de configuration SQL :
- Assurez-vous que les cases à cocher suivantes sont cochées:
II Activez FILESTREAM au niveau de l’instance SQL :
- Dans SQL Server Management Studio, cliquez sur Nouvelle requête pour afficher l’Éditeur de requêtes.
- Dans l’Éditeur de requêtes, entrez le code Transact-SQL suivant :
EXEC sp_configure filestream_access_level, 2
RECONFIGURER
IIIFournir un groupe de fichiers FILESTREAM au niveau de la base de données
Avant de pouvoir créer des tables de fichiers dans une base de données, la base de données doit avoir un groupe de fichiers FILESTREAM . Pour plus d’informations sur cette condition préalable, consultez Créer une base de données compatible FILESTREAM.
Puisque je vais créer une nouvelle base de données, je vais d’abord créer un dossier pour contenir des tables de fichiers:
puis définir un groupe de fichiers Filestream dans ce code:
CREATE DATABASE FILESERVER
ON
PRIMARY(NAME=FS,
FILENAME=’c:\FILESERVER\FSdat .mdf’),
GROUPE DE FICHIERS FileStreamFS CONTIENT FILESTREAM(NAME=FSgr,
FILENAME=’c:\FILESERVER\fs1 ‘)
CONNECTEZ-VOUS (NOM=FSlog, NOM DE FICHIER= ‘c:\SERVEUR DE FICHIERS\FSlog.ldf’)
ALLEZ
Attention! Comme le dit Mme: » Pour un groupe de fichiers FILESTREAM, NOM de FICHIER fait référence à un chemin. Le chemin d’accès au dernier dossier doit exister et le dernier dossier ne doit pas exister. » Dans le code précédent, c:\FILESERVER doit exister, mais fs1 ne doit PAS exister au moment où vous exécutez l’instruction CREATE DATABASE.
La page de propriétés de la base de données des groupes de fichiers affiche maintenant le flux de fichiers FileStreamFS pour la base de données du SERVEUR de FICHIERS:
IV Activer l’accès non transactionnel au niveau de la base de données
Une fois la base de données créée, la dernière étape de sa préparation pour les fichiers est d’enbable l’accès non transactionnel au niveau de la base de données.
FileTables permet aux applications Windows d’obtenir un gestionnaire de fichier Windows pour FILTRER les données sans nécessiter de transaction. Pour autoriser cet accès non transactionnel aux fichiers stockés dans SQL Server, vous devez spécifier le niveau d’accès non transactionnel souhaité au niveau de la base de données pour chaque base de données qui contiendra des fichiers. Si nous exécutons le code suivant –
SÉLECTIONNEZ DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
DEPUIS sys.database_filestream_options;
GO
wenous verrons qu’aucune base de données n’a d’accès non transactionnel activé:
Pour activer l’accès non transactionnel aux fichiers au niveau de la base de données (pour la base de données du serveur de fichiers dans ce cas), une autre option doit être spécifiée – un répertoire pour les tables de fichiers: c’est le répertoire que j’ai créé au début de l’article-C:\FILESERVER, mais le nom du répertoire doit être tapé sans la lettre de lecteur et le symbole « \ » :
ALTER DATABASE FILESERVER
SET FILESTREAM(NON_TRANSACTED_ACCESS= FULL, DIRECTORY_NAME=N’FILESERVER’)
GO
« Dans la hiérarchie des dossiers de table de fichiers, ce répertoire au niveau de la base de données devient enfant du nom de partage spécifié pour FILESTREAM au niveau de l’instance, et le parent des chiers FileTab créés dans la base de données » – cela signifie que FILESERVER sera le sous–dossier du partage MSSQLSERVER car je ne l’ai pas modifié à l’étape I-2. Pour plus d’informations, veuillez consulter Travailler avec des répertoires et des chemins dans des fichiers
L’exécution de ce code montrera que l’accès non transactionnel a été activé avec succès :
SÉLECTIONNEZ DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
DEPUIS sys.database_filestream_options;
GO
Le code suivant affiche le nom du répertoire de la base de données du SERVEUR de FICHIERS :
Sélectionnez DB_NAME(database_id), direcory_name
DEPUIS sys.database_filestream_options;
GO
Voici le partage de fichiers « SQL » que les utilisateurs peuvent désormais utiliser pour stocker leurs fichiers et dossiers :
Si je si le partage MSSQLSERVER par défaut avait été renommé en quelque chose comme SHARE1 à l’étape I-2, il n’y aurait eu aucune indication d’un serveur SQL impliqué – du point de vue de l’utilisateur, il ne s’agirait que d’un partage de fichiers ordinaire.
Toutes les conditions préalables à la création de fichiers sont remplies maintenant et nous pouvons procéder à la création de fichiers.
Travailler avec des tables de fichiers SQL Server – partie 2