Включение необходимых компонентов для таблицы 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 удаляются.
[В НАЧАЛО]