Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Описывает способ включения компонентов, обязательных для создания и использования таблиц FileTable.
Включение необходимых компонентов для FileTable
Чтобы включить необходимые компоненты для создания и использования таблиц FileTable, включите следующие элементы:
На уровне экземпляра.
На уровне базы данных.
Включение FILESTREAM на уровне экземпляра
FileTables расширяет возможности функции FILESTREAM SQL Server. Перед тем как вы сможете создать и использовать FileTables, необходимо включить 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
и параметром FILESTREAM DIRECTORY_NAME
.
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
, то имя каталога остается равным null. Однако нельзя создавать FileTables в базе данных, пока не укажете значениеDIRECTORY_NAME
на уровне базы данных.Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.
Если база данных содержит FileTables, вы не можете установить
DIRECTORY_NAME
в значение NULL.При присоединении или восстановлении базы данных операция завершается ошибкой, если новая база данных имеет значение для
DIRECTORY_NAME
, которое уже существует в целевом экземпляре. Укажите уникальное значение дляDIRECTORY_NAME
при вызовеCREATE DATABASE FOR ATTACH
илиRESTORE DATABASE
.При обновлении существующей базы данных значение
DIRECTORY_NAME
равно NULL.Если вы включаете или отключаете нетрансактный доступ на уровне базы данных, операция не проверяет, задано ли имя каталога или является ли оно уникальным.
При удалении базы данных, в которой включены таблицы FileTable, каталог на уровне базы данных и все структуры каталогов всех находящихся в ней таблиц FileTable удаляются.