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