Включение необходимых компонентов для FileTable
Область применения: SQL Server
Описывает способ включения компонентов, обязательных для создания и использования таблиц FileTable.
Включение необходимых компонентов для FileTable
Чтобы включить необходимые компоненты для создания и использования таблиц FileTable, включите следующие элементы:
На уровне экземпляра.
На уровне базы данных.
Включение FILESTREAM на уровне экземпляра
FileTables расширяет возможности функции FILESTREAM SQL Server. Перед созданием и использованием fileTable необходимо включить доступ к FILESTREAM на уровне Windows и экземпляре SQL Server.
Включение FILESTREAM на уровне экземпляра
Сведения о включении FILESTREAM см. в разделе Включение и настройка FILESTREAM.
При вызове sp_configure
включения FILESTREAM на уровне экземпляра необходимо задать filestream_access_level
параметр 2
. Дополнительные сведения см. на уровне доступа FILESTREAM (параметр конфигурации сервера).
Разрешить FILESTREAM через брандмауэр
Сведения о разрешении FILESTREAM через брандмауэр см. в разделе Configure a Firewall for FILESTREAM Access.
Предоставление файловой группы FILESTREAM на уровне базы данных
Для создания в базе данных таблиц FileTables эта база должна иметь файловую группу FILESTREAM. Дополнительные сведения об этом предварительном требовании см. в статье Создание базы данных FILESTREAM-Enabled.
Включение нетрансактционного доступа на уровне базы данных
Таблицы 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 (SQL Server 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
Уровень нетрансактного доступа можно указать в поле "Нетрансактный доступ" в поле "Нетрансактированного доступа" диалогового окна "Параметры" диалогового окна "Свойства базы данных". Дополнительные сведения об этом диалоговом окне см. в разделе "Свойства базы данных" (страница параметров).
Указание каталога для fileTables на уровне базы данных
При включении нетрансакционного доступа к файлам на уровне базы данных можно при необходимости указать имя каталога одновременно с параметром DIRECTORY_NAME
. Если вы не предоставляете имя каталога при включении нетрансактционного доступа, необходимо предоставить его позже, прежде чем создавать таблицы FileTable в базе данных.
В иерархии папок FileTable этот каталог на уровне базы данных является дочерним по отношению к общему ресурсу для FILESTREAM на уровне экземпляра и родительским по отношению к таблицам FileTable, созданным в базе данных. Дополнительные сведения см. в статье Work with Directories and Paths in FileTables.
Указание каталога для fileTables на уровне базы данных
Указанное имя должно быть уникальным в экземпляре для каталогов уровня базы данных.
Указание каталога для FileTables с помощью Transact-SQL
При создании базы данных вызовите инструкцию CREATE DATABASE (SQL Server 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 (SQL Server 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
Указание каталога для fileTables с помощью 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
Требования и ограничения для каталога уровня базы данных
Установка необязательного
DIRECTORY_NAME
при вызовеCREATE DATABASE
илиALTER DATABASE
. Если значение не указаноDIRECTORY_NAME
, имя каталога остается пустым. Однако нельзя создавать таблицы FileTable в базе данных, пока не укажите значение наDIRECTORY_NAME
уровне базы данных.Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.
Если база данных содержит fileTables, вы не можете задать
DIRECTORY_NAME
значение NULL.При присоединении или восстановлении базы данных операция завершается ошибкой, если новая база данных имеет значение, которое
DIRECTORY_NAME
уже существует в целевом экземпляре. Укажите уникальное значение приDIRECTORY_NAME
вызовеCREATE DATABASE FOR ATTACH
илиRESTORE DATABASE
.При обновлении существующей базы данных значение
DIRECTORY_NAME
равно NULL.Если вы включаете или отключаете нетрансактный доступ на уровне базы данных, операция не проверяет, задано ли имя каталога или является ли оно уникальным.
При удалении базы данных, в которой включены таблицы FileTable, каталог на уровне базы данных и все структуры каталогов всех находящихся в ней таблиц FileTable удаляются.