Поделиться через


Включение необходимых компонентов для таблицы FileTable

Описывает способ включения компонентов, обязательных для создания и использования таблиц FileTable.

В этом разделе

Необходимо ...

  • включить необходимые компоненты для таблицы FileTable

  • Включение FILESTREAM на уровне экземпляра

    • Как включить функцию FILESTREAM на уровне экземпляра

    • Как разрешить FILESTREAM через брандмауэр

  • Указание файловой группы FILESTREAM

  • включить нетранзакционный доступ на уровне базы данных

    • Как проверить состояние нетранзакционного доступа к базам данных (включен или выключен)

    • Как включить нетранзакционный доступ на уровне базы данных

  • указать каталог для таблиц FileTable на уровне базы данных

    • Как указать каталог для таблиц FileTable на уровне базы данных

    • Как просмотреть существующие имена каталогов для экземпляра

    • Требования и ограничения для уровня базы данных каталога

Включение необходимых компонентов для FileTable

Чтобы включить необходимые компоненты для создания и использования таблиц FileTable, включите следующие элементы:

  • На уровне экземпляра.

    • Включение FILESTREAM на уровне экземпляра
  • На уровне базы данных.

    • Предоставление файловой группы FILESTREAM на уровне базы данных

    • включить нетранзакционный доступ на уровне базы данных

    • указать каталог для таблиц FileTable на уровне базы данных

[В НАЧАЛО]

Включение FILESTREAM на уровне экземпляра

Таблицы FileTable расширяют возможности функции FILESTREAM в SQL Server. Поэтому, прежде чем будет возможно создавать и использовать таблицы FileTable, необходимо включить функцию FILESTREAM для доступа к операциям файлового ввода-вывода на уровне Windows и в экземпляре SQL Server.

Как включить функцию FILESTREAM на уровне экземпляра

Сведения о включении FILESTREAM см. в разделе Включение и настройка FILESTREAM.

При вызове sp_configure для включения FILESTREAM на уровне экземпляра необходимо установить параметр filestream_access_level в значение 2. Дополнительные сведения см. в разделе Параметр конфигурации сервера «уровень доступа файлового потока».

[В начало]

Как разрешить FILESTREAM через брандмауэр

Сведения о разрешении FILESTREAM через брандмауэр см. в разделе Настройка брандмауэра для доступа FILESTREAM.

[В начало]

Предоставление файловой группы FILESTREAM на уровне базы данных

Для создания в базе данных таблиц FileTables эта база должна иметь файловую группу FILESTREAM. Дополнительные сведения о данном предварительном требовании см. в разделе Создание базы данных с поддержкой FILESTREAM.

[В начало]

Включение нетранзакционного доступа на уровне базы данных

Таблицы FileTable позволяют приложениям Windows получать дескрипторы файлов Windows для данных FILESTREAM без необходимости транзакции. Чтобы разрешить такой нетранзакционный доступ к файлам, хранящимся в SQL Server, необходимо указать нужный уровень нетранзакционного доступа на уровне базы данных, в которой будут содержаться таблицы FileTable.

Как Проверка состояния нетранзакционного доступа (включен или выключен)

Выполнить запрос к представлению каталога sys.database_filestream_options (Transact-SQL) и проверить столбцы non_transacted_access и non_transacted_access_desc.

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

[В НАЧАЛО]

Как включить нетранзакционный доступ на уровне базы данных

Доступными уровнями нетранзакционного доступа являются FULL, READ_ONLY и OFF.

  • Указание уровня нетранзакционного доступа с помощью Transact-SQL

    • При создании базы данных вызовите инструкцию CREATE DATABASE (Transact-SQL) с параметром NON_TRANSACTED_ACCESS FILESTREAM.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
    • При изменении существующей базы данных вызовите инструкцию ALTER DATABASE (Transact-SQL) с параметром NON_TRANSACTED_ACCESS FILESTREAM.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
  • Задание уровня нетранзакционного доступа в среде SQL Server Management Studio
    Можно задать уровень нетранзакционного доступа в поле Нетранзакционный доступ к файловому потоку на странице Параметры диалогового окна Свойства базы данных. Дополнительные сведения об этом диалоговом окне см. в разделе Свойства базы данных (страница «Параметры»).

[В НАЧАЛО]

Указание каталога для таблиц FileTable на уровне базы данных

При включении нетранзакционного доступа к файлам на уровне базы данных можно при необходимости в то же время указать имя каталога с помощью параметра DIRECTORY_NAME. Если при включении нетранзакционного доступа не указано имя каталога, то необходимо ввести его позже, прежде чем будет возможно создать таблицу FileTable в базе данных.

В иерархии папок FileTable этот каталог на уровне базы данных является дочерним по отношению к общему ресурсу для FILESTREAM на уровне экземпляра и родительским по отношению к таблицам FileTable, созданным в базе данных. Дополнительные сведения см. в разделе Работа с каталогами и путями в таблицах FileTable.

Как указать каталог для таблиц FileTable на уровне базы данных

Указанное имя должно быть уникальным в экземпляре для каталогов уровня базы данных.

  • Указание каталога для таблиц FileTable с помощью языка Transact-SQL

    • При создании новой базы данных вызовите инструкцию CREATE DATABASE (Transact-SQL) с параметром DIRECTORY_NAME FILESTREAM.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • При изменении существующей базы данных вызовите инструкцию ALTER DATABASE (Transact-SQL) с параметром DIRECTORY_NAME FILESTREAM. Если эти параметры используются для изменения имени каталога, то база данных должна быть заблокирована в монопольном режиме при отсутствии открытых дескрипторов файлов.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • При присоединении базы данных вызовите инструкцию CREATE DATABASE (Transact-SQL) с параметрами FOR ATTACH и DIRECTORY_NAME FILESTREAM.

      CREATE DATABASE database_name
          FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
    • При восстановлении базы данных вызовите инструкцию RESTORE (Transact-SQL) с параметром DIRECTORY_NAME FILESTREAM.

      RESTORE DATABASE database_name
          WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
  • Задание каталога для таблиц FileTable в среде SQL Server Management Studio
    Можно указать имя каталога в поле Имя каталога FILESTREAM на странице Параметры диалогового окна Свойства базы данных. Дополнительные сведения об этом диалоговом окне см. в разделе Свойства базы данных (страница «Параметры»).

[В начало]

Как просмотреть существующие имена каталогов для экземпляра

Чтобы просмотреть список существующих имен каталогов для экземпляра, выполните запрос к представлению каталога sys.database_filestream_options (Transact-SQL) и проверьте столбец filestream_database_directory_name.

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

[В начало]

Требования и ограничения для уровня базы данных каталога

  • При вызове метода CREATE DATABASE или ALTER DATABASE параметр DIRECTORY_NAME является необязательным. Если значение DIRECTORY_NAME не указано, имя каталога имеет значение NULL. Тем не менее невозможно создать таблицу FileTable в базе данных, пока не указано значение для параметра DIRECTORY_NAME на уровне базы данных.

  • Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.

  • Если база данных содержит таблицы FileTable, нельзя вернуть параметр DIRECTORY_NAME в значение NULL.

  • Операция присоединения или восстановления базы данных завершится ошибкой, если новая база данных имеет такое же значение параметра DIRECTORY_NAME, как уже существует в целевом экземпляре. Укажите уникальное значение для параметра DIRECTORY_NAME при вызове инструкции CREATE DATABASE FOR ATTACH или RESTORE DATABASE.

  • При обновлении существующей базы данных до SQL Server 2012 значение DIRECTORY_NAME равно NULL.

  • При включении или отключении нетранзакционного доступа на уровне базы данных операция не проверяет, было ли указано имя каталога и является ли оно уникальным.

  • При удалении базы данных, в которой включены таблицы FileTable, каталог на уровне базы данных и все структуры каталогов всех находящихся в ней таблиц FileTable удаляются.

[В НАЧАЛО]