Activer les conditions préalables pour les FileTables

Décrit la manière de satisfaire aux conditions préalables en vue de la création et de l'utilisation de FileTables.

Dans cette rubrique

Je souhaite…

  • Activer les conditions préalables pour les FileTables

  • Activer FILESTREAM au niveau de l'instance

    • Procédure : activer FILESTREAM au niveau de l'instance

    • Procédure : activer FILESTREAM via le pare-feu

  • Fournir un groupe de fichiers FILESTREAM

  • Activer l'accès non transactionnel au niveau de la base de données

    • Procédure : vérifier si l'accès non transactionnel est activé sur les bases de données

    • Procédure : activer l'accès non transactionnel au niveau de la base de données

  • Spécifier un répertoire pour les FileTables au niveau de la base de données

    • Procédure : spécifier un répertoire pour les FileTables au niveau de la base de données

    • Procédure : afficher les noms de répertoires existants pour l'instance

    • Exigences et restrictions pour le répertoire de niveau base de données

Activation des conditions préalables pour les FileTables

Pour activer les conditions préalables en vue de créer et d'utiliser les FileTables, activez les éléments suivants :

  • Au niveau de l'instance :

    • Activer FILESTREAM au niveau de l'instance
  • Au niveau de la base de données :

    • Fournir un groupe de fichiers FILESTREAM au niveau de la base de données

    • Activer l'accès non transactionnel au niveau de la base de données

    • Spécifier un répertoire pour les FileTables au niveau de la base de données

[Haut de la page]

Activation de FILESTREAM au niveau de l'instance

Les FileTables étendent les fonctionnalités FILESTREAM de SQL Server. Par conséquent, vous devez activer FILESTREAM pour l'accès d'E/S de fichier au niveau de Windows et sur l'instance de SQL Server avant de pouvoir créer et utiliser des FileTables.

Procédure : activer FILESTREAM au niveau de l'instance

Pour plus d'informations sur la manière d'activer FILESTREAM, consultez Activer et configurer FILESTREAM.

Lorsque vous appelez sp_configure pour activer FILESTREAM au niveau de l'instance, vous devez définir l'option filestream_access_level sur 2. Pour plus d'informations, consultez Niveau d'accès du flux de fichier (option de configuration de serveur).

[Haut de la page]

Procédure : activer FILESTREAM via le pare-feu

Pour plus d'informations sur l'activation de FILESTREAM via le pare-feu, consultez Configurer un pare-feu pour l'accès FILESTREAM.

[Haut de la page]

Fournir un groupe de fichiers FILESTREAM au niveau de la base de données

Avant de pouvoir créer des FileTables dans une base de données, cette dernière 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.

[Haut de la page]

Activation de l'accès non transactionnel au niveau de la base de données

Les FileTables permettent aux applications Windows d'obtenir un descripteur de fichier Windows aux données FILESTREAM sans requérir de transaction. Pour autoriser cet accès non transactionnel aux fichiers stockés dans SQL Server, vous devez spécifier le niveau désiré d'accès non transactionnel au niveau de la base de données pour chaque base de données qui contiendra des FileTables.

Procédure : vérifier si l'accès non transactionnel est activé sur les bases de données

Interroger l'affichage catalogue sys.database_filestream_options (Transact-SQL) et vérifiez les colonnes non_transacted_access et non_transacted_access_desc.

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options;
GO

[Haut de la page]

Procédure : activer l'accès non transactionnel au niveau de la base de données

Les niveaux disponibles de l'accès non transactionnel sont FULL, READ_ONLY et OFF.

  • Spécifier le niveau d'accès non transactionnel à l'aide de Transact-SQL

    • Lorsque vous créez une base de données, appelez l'instruction CREATE DATABASE (Transact-SQL) avec l'option FILESTREAM NON_TRANSACTED_ACCESS.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
    • Lorsque vous modifiez une base de données existante, appelez l'instruction ALTER DATABASE (Transact-SQL) avec l'option FILESTREAM NON_TRANSACTED_ACCESS.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
  • Spécifier le niveau d'accès non transactionnel à l'aide de SQL Server Management Studio
    Vous pouvez spécifier le niveau d'accès non transactionnel dans le champ Accès non transactionnel FILESTREAM de la page Options de la boîte de dialogue Propriétés de la base de données. Pour plus d'informations sur cette boîte de dialogue, consultez Propriétés de la base de données (page Options).

[Haut de la page]

Spécification d'un répertoire pour les FileTables au niveau de la base de données

Lorsque vous activez l'accès non transactionnel aux fichiers au niveau de la base de données, vous pouvez éventuellement fournir en même temps un nom de répertoire à l'aide de l'option DIRECTORY_NAME. Si vous ne fournissez pas de nom de répertoire lorsque vous activez l'accès non transactionnel, vous devez le fournir ultérieurement avant de pouvoir créer des FileTables dans la base de données.

Dans l'arborescence du dossier FileTable, ce répertoire de base de données devient l'enfant du nom de partage spécifié pour FILESTREAM au niveau de l'instance, et le parent des FileTables créés dans la base de données. Pour plus d'informations, consultez Travailler avec des répertoires et des chemins d'accès dans FileTables.

Procédure : spécifier un répertoire pour les FileTables au niveau de la base de données

Le nom que vous spécifiez doit être unique dans l'instance pour les répertoires de niveau base de données.

  • Spécifier un répertoire pour les FileTables à l'aide de Transact-SQL

    • Lorsque vous créez une base de données, appelez l'instruction CREATE DATABASE (Transact-SQL) avec l'option FILESTREAM DIRECTORY_NAME.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Lorsque vous modifiez une base de données existante, appelez l'instruction ALTER DATABASE (Transact-SQL) avec l'option FILESTREAM DIRECTORY_NAME. Lorsque vous utilisez ces options pour modifier le nom de répertoire, la base de données doit être verrouillée en mode exclusif, sans descripteurs de fichiers ouverts.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Lorsque vous attachez une base de données, appelez l'instruction CREATE DATABASE (Transact-SQL) avec l'option FOR ATTACH et l'option FILESTREAM DIRECTORY_NAME.

      CREATE DATABASE database_name
          FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Lorsque vous restaurez une base de données, appelez l'instruction RESTORE (Transact-SQL) avec l'option FILESTREAM DIRECTORY_NAME.

      RESTORE DATABASE database_name
          WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
  • Spécifier un répertoire pour les FileTables à l'aide de SQL Server Management Studio
    Vous pouvez spécifier un nom de répertoire dans le champ Nom du répertoire FILESTREAM de la page Options de la boîte de dialogue Propriétés de la base de données. Pour plus d'informations sur cette boîte de dialogue, consultez Propriétés de la base de données (page Options).

[Haut de la page]

Procédure : afficher les noms de répertoires existants pour l'instance

Pour afficher la liste des noms de répertoire existant pour l'instance, interrogez l'affichage catalogue sys.database_filestream_options (Transact-SQL) et vérifiez la colonne filestream_database_directory_name.

SELECT DB_NAME ( database_id ), directory_name
    FROM sys.database_filestream_options;
GO

[Haut de la page]

Exigences et restrictions pour le répertoire de niveau base de données

  • La définition de DIRECTORY_NAME est facultative lorsque vous appelez CREATE DATABASE ou ALTER DATABASE. Si vous ne spécifiez pas de valeur pour DIRECTORY_NAME, le nom de répertoire reste Null. Cependant, vous ne pouvez pas créer de FileTables dans la base de données tant que vous n'avez pas spécifié de valeur pour DIRECTORY_NAME au niveau de la base de données.

  • 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.

  • Lorsque la base de données contient des FileTables, vous ne pouvez pas redéfinir DIRECTORY_NAME sur une valeur Null.

  • Lorsque vous attachez ou restaurez une base de données, l'opération échoue si la nouvelle base de données comporte une valeur pour DIRECTORY_NAME qui existe déjà dans l'instance cible. Spécifiez une valeur unique pour DIRECTORY_NAME lorsque vous appelez CREATE DATABASE FOR ATTACH ou RESTORE DATABASE.

  • Lorsque vous mettez à niveau une base de données existante avec SQL Server 2012, la valeur de DIRECTORY_NAME est Null.

  • Lorsque vous activez ou désactivez l'accès non transactionnel au niveau de la base de données, l'opération ne vérifie pas si le nom de répertoire a été spécifié ou s'il est unique.

  • Lorsque vous supprimez une base de données activée pour les FileTables, le répertoire de niveau base de données et toutes les structures de répertoires de tous les FileTables situés au niveau inférieur sont supprimés.

[Haut de la page]