Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Описывает, как создать таблицу FileTable или изменить или удалить существующую таблицу FileTable.
Создание таблицы FileTable
FileTable — это специализированная пользовательская таблица с предварительно определенной и фиксированной схемой. Эта схема хранит данные FILESTREAM, сведения о файлах и каталогах и атрибуты файла. Сведения о схеме FileTable см. в разделе "Схема FileTable".
Вы можете создать новую таблицу FileTable с помощью Transact-SQL или SQL Server Management Studio. Так как FileTable имеет фиксированную схему, вам не нужно указывать список столбцов. Простой синтаксис для создания таблицы FileTable позволяет указать следующее:
Имя каталога. В иерархии папок FileTable этот каталог уровня таблицы становится дочерним каталогом базы данных, указанным на уровне базы данных, и родительским элементом файлов или каталогов, хранящихся в таблице.
Имя параметров сортировки, которое будет использоваться для имен файлов в столбце «Имя» таблицы FileTable.
Имена, которые будут использоваться для трех первичных ключей и уникальных ограничений, создаваемых автоматически.
Практическое руководство. Создание таблицы FileTable
Создание таблицы FileTable с помощью Transact-SQL
Создайте таблицу FileTable, вызвав инструкцию CREATE TABLE (Transact-SQL) с параметром AS FileTable . Так как FileTable имеет фиксированную схему, вам не нужно указывать список столбцов. Можно указать следующие параметры для новой таблицы FileTable:
FILETABLE_DIRECTORY. Указывает каталог, который служит корневым каталогом для всех файлов и каталогов, хранящихся в FileTable. Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Сравнение на уникальность не учитывает регистр, независимо от текущих параметров коллации.
Это значение имеет тип данных nvarchar(255) и использует фиксированный параметр сортировки Latin1_General_CI_AS_KS_WS.
Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.
Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Сравнение уникальности не учитывает регистр независимо от текущих параметров сортировки.
Если при создании таблицы FileTable имя каталога не указано, имя самой таблицы FileTable используется в качестве имени каталога.
FILETABLE_COLLATE_FILENAME. Указывает имя параметров сортировки, применяемых к столбцу Name в FileTable.
Для соответствия семантике именования файлов Windows указанные параметры сортировки должны быть нечувствительными к регистру .
Если значение для FILETABLE_COLLATE_FILENAME не указано или указано database_default, столбец наследует параметры сортировки текущей базы данных. Если текущая сортировка базы данных чувствительна к регистру, возникает ошибка, и операция CREATE TABLE не удается.
Можно также указать имена, которые будут использоваться для 3 первичного ключа и уникальных ограничений, которые создаются автоматически. Если вы не предоставляете имена, система создает имена, как описано далее в этом разделе.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Примеры
В следующем примере создается новый файл FileTable и указываются пользовательские значения как для FILETABLE_DIRECTORY , так и для FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FileTable
WITH (
FileTable_Directory = 'DocumentTable',
FileTable_Collate_Filename = database_default
);
GO
В следующем примере также создается новый FileTable. Так как определяемые пользователем значения не указаны, значение FILETABLE_DIRECTORY становится именем FileTable, значение FILETABLE_COLLATE_FILENAME становится database_default, а первичный ключ и уникальные контринты получают имена, созданные системой.
CREATE TABLE DocumentStore AS FileTable;
GO
Создайте FileTable в SQL Server Management Studio
В обозревателе объектов разверните объекты в выбранной базе данных, а затем щелкните правой кнопкой мыши папку "Таблицы ", а затем выберите "Создать таблицу".
Этот параметр открывает новое окно скрипта, содержащее шаблон скрипта Transact-SQL, который можно настроить и запустить для создания таблицы FileTable. Используйте параметр "Указать значения для параметров шаблона " в меню "Запрос ", чтобы легко настроить скрипт.
Требования и ограничения для создания таблицы FileTable
Нельзя изменить существующую таблицу, чтобы преобразовать ее в таблицу FileTable.
Родительский каталог, указанный ранее на уровне базы данных, должен иметь ненулевое значение. Сведения об указании каталога уровня базы данных см. в разделе "Включение необходимых компонентов для FileTable".
Для FileTable требуется допустимая файловая группа FILESTREAM, так как fileTable содержит столбец FILESTREAM. При необходимости можно указать допустимую файловую группу FILESTREAM в рамках команды CREATE TABLE для создания таблицы FileTable. Если вы не указываете файловую группу, fileTable использует файловую группу FILESTREAM по умолчанию для базы данных. Если у базы данных нет файловой группы FILESTREAM, возникает ошибка.
Невозможно создать ограничение таблицы в инструкции CREATE TABLE...AS FILETABLE. Однако можно добавить ограничение позже с помощью инструкции ALTER TABLE .
Невозможно создать таблицу FileTable в базе данных tempdb или в любой из других системных баз данных.
Невозможно создать таблицу FileTable в виде временной таблицы.
Изменение таблицы FileTable
Так как FileTable имеет предопределенную и фиксированную схему, нельзя добавлять или изменять его столбцы. Тем не менее можно добавить пользовательские индексы, триггеры, ограничения и другие параметры в FileTable.
Сведения об использовании инструкции ALTER TABLE для включения или отключения пространства имен FileTable, включая системные ограничения, см. в разделе "Управление таблицами FileTable".
Практическое руководство. Изменение каталога для таблицы FileTable
Изменение каталога для таблицы FileTable с помощью Transact-SQL
Вызовите инструкцию ALTER TABLE и укажите допустимое новое значение для параметра FILETABLE_DIRECTORY SET.
Пример
ALTER TABLE filetable_name
SET ( FILETABLE_DIRECTORY = N'directory_name' );
GO
Изменение каталога для fileTable с помощью SQL Server Management Studio
В обозревателе объектов щелкните правой кнопкой мыши файл fileTable и выберите "Свойства ", чтобы открыть диалоговое окно "Свойства таблицы ". На странице FileTable введите новое значение для имени каталога FileTable.
Требования и ограничения для изменения таблицы FileTable
Нельзя изменить значение FILETABLE_COLLATE_FILENAME.
Нельзя изменять, удалять или отключать системные столбцы таблицы FileTable.
Нельзя добавлять новые пользовательские столбцы, вычисляемые столбцы или сохраненные вычисляемые столбцы в таблицу FileTable.
Удаление таблицы FileTable
Вы можете удалить таблицу FileTable с помощью обычного синтаксиса инструкции DROP TABLE (Transact-SQL) .
При удалении таблицы FileTable также удаляются следующие объекты:
Все столбцы FileTable и все объекты, связанные с таблицей, такие как индексы, ограничения и триггеры, также удаляются.
Каталог FileTable и вложенные каталоги, содержащиеся в ней, исчезают из иерархии файлов и каталогов fileSTREAM базы данных.
Команда DROP TABLE не удаётся, если в пространстве имен FileTable открыты дескрипторы файлов. Сведения о закрытии открытых дескрипторов см. в разделе "Управление FileTable".
Другие объекты базы данных создаются при создании таблицы FileTable
При создании новой таблицы FileTable также создаются некоторые системные индексы и ограничения. Невозможно изменить или удалить эти объекты; они исчезают только при удалении самой таблицы FileTable. Чтобы просмотреть список этих объектов, выполните запрос к представлению каталога sys.filetable_system_defined_objects (Transact-SQL).
--View all objects for all filetables, unsorted
SELECT * FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Индексы, созданные при создании таблицы FileTable
При создании новой таблицы FileTable также создаются следующие системные индексы:
Число столбцов | Тип индекса |
[path_locator] ASC | Первичный ключ, некластеризованный |
[parent_path_locator] ASC, [имя] ASC |
Уникальный, некластеризованный |
[stream_id] ASC | Уникальный, некластеризованный |
Ограничения, созданные при создании новой таблицы FileTable
При создании новой таблицы FileTable также создаются следующие системные ограничения:
Ограничения | Применяет |
---|---|
Ограничения по умолчанию для следующих столбцов: creation_time is_archive is_directory is_hidden is_offline is_readonly is_system is_temporary время_последнего_доступа last_write_time path_locator stream_id |
Системные ограничения по умолчанию применяют значения по умолчанию для указанных столбцов. |
Проверка ограничений | Системные ограничения проверки применяют следующие требования: Допустимые имена файлов. Допустимые атрибуты файла. Родительский объект должен быть каталогом. Иерархия пространства имен заблокирована во время манипуляции с файлами. |
Правила именования системных ограничений
Системные ограничения, описанные выше, именуются в формате <constraintType>_<tablename>[_<columnname>]_<uniquifier>, где:
Тип ограничения <>constraint_type может быть CK (ограничение проверки), DF (ограничение по умолчанию), FK (внешний ключ), PK (первичный ключ) или UQ (уникальное ограничение).
<uniquifier> — это строка, созданная системой для обеспечения уникальности имени. Эта строка может содержать имя FileTable и уникальный идентификатор.