Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
Описывает способы создания новых таблиц FileTable и изменения или удаления существующих таблиц FileTable.
Создание таблицы FileTable
FileTable — это специализированная пользовательская таблица, которая имеет предопределенную и фиксированную схему. Эта схема содержит данные FILESTREAM, сведения о файлах и каталогах и атрибуты файлов. Сведения о данном образце схемы см. в разделе FileTable Schema.
Вы можете создать новую таблицы FileTable с помощью Transact-SQL или SQL Server Management Studio. Так как fileTable имеет фиксированную схему, вам не нужно указывать список столбцов. Простой синтаксис для создания таблицы FileTable позволяет указать следующее:
Имя каталога. В иерархии папок FileTable этот каталог уровня таблицы становится дочерним для каталога базы данных, указанного на уровне базы данных, и родительским для файлов или каталогов, хранящихся в таблице.
Имя параметров сортировки, используемых для имен файлов в столбце
NameFileTable.Можно также указать имена, предназначенные для использования в трех первичных ключах и ограничениях уникальности, создаваемых автоматически.
Создание таблицы FileTable с помощью Transact-SQL
Создайте таблицу FileTable, вызвав инструкцию CREATE TABLE с параметром 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не выполняется.
Можно также указать имена, предназначенные для использования в трех первичных ключах и ограничениях уникальности, создаваемых автоматически. Если вы не предоставляете имена, система создает имена, как описано далее в этой статье.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_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
В обозревателе объектов разверните объекты в выбранной базе данных, затем щелкните правой кнопкой мыши папку Таблицы и выберите Создать FileTable.
Этот параметр открывает новое окно скрипта, содержащее шаблон скрипта Transact-SQL, который можно настроить и запустить для создания таблицы FileTable. Для простой настройки скрипта используйте параметр Указать значения для параметров шаблона в меню Запрос .
Требования и ограничения для создания таблицы FileTable
Вы не можете изменить существующую таблицу, чтобы преобразовать ее в таблицу FileTable.
Родительский каталог, предварительно указанный на уровне базы данных, должен иметь значение, отличное от NULL. Сведения об указании каталога уровня базы данных см. в разделе "Включение необходимых компонентов для FileTable".
Поскольку таблица FileTable содержит столбец FILESTREAM, требуется действующая файловая группа FILESTREAM. При необходимости можно указать допустимую файловую группу FILESTREAM в рамках
CREATE TABLEкоманды для создания таблицы FileTable. Если вы не указываете файловую группу, fileTable использует файловую группу FILESTREAM по умолчанию для базы данных. Если в базе данных нет файловой группы FILESTREAM, возникает ошибка.Невозможно создать ограничение таблицы в рамках инструкции
CREATE TABLE...AS FILETABLE. Однако можно добавить ограничение позже с помощью инструкцииALTER TABLE.Нельзя создать файл FileTable в
tempdbбазе данных или в других системных базах данных.Невозможно создать таблицу FileTable в качестве временной таблицы.
Изменение таблицы FileTable
Так как FileTable имеет предопределенную и фиксированную схему, нельзя добавлять или изменять его столбцы. Тем не менее в таблицу FileTable можно добавлять пользовательские индексы, триггеры, ограничения и другие параметры.
Сведения об использовании ALTER TABLE инструкции для включения или отключения пространства имен FileTable, включая ограничения, определенные системой, см. в разделе "Управление файлами".
Изменение каталога для таблицы FileTable с помощью Transact-SQL
Вызовите инструкцию ALTER TABLE и укажите допустимое новое значение для SET параметра FILETABLE_DIRECTORY.
Example
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 .
При удалении таблицы FileTable также удаляются следующие объекты:
Все столбцы и объекты, связанные с таблицей, например индексы, ограничения и триггеры также удаляются.
Каталог FileTable и вложенные каталоги, содержащиеся в ней, исчезают из файлов FILESTREAM и иерархии каталогов базы данных.
Команда завершается ошибкой DROP TABLE, если в пространстве имен FileTable есть открытые дескрипторы файлов. Сведения о закрытии открытых дескрипторов см. в разделе Управление объектами FileTable.
Другие объекты базы данных создаются при создании таблицы FileTable
При создании новой таблицы FileTable также создаются некоторые системные индексы и ограничения. Невозможно изменить или удалить эти объекты; они исчезают только при удалении самой таблицы FileTable. Чтобы просмотреть список этих объектов, отправьте запрос к представлению каталога sys.filetable_system_defined_objects.
--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 также создаются следующие системные индексы.
| Столбцы | Тип индекса | Clustered |
|---|---|---|
[path_locator] ASC |
Первичный ключ | нет |
[parent_path_locator] ASC, [name] ASC |
Уникальный | нет |
[stream_id] ASC |
Уникальный | нет |
Ограничения, созданные при создании новой таблицы FileTable
При создании новой таблицы FileTable также создаются следующие системные ограничения.
| Ограничения | Принудительно применяет |
|---|---|
Ограничения по умолчанию для следующих столбцов:creation_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_id |
Системные ограничения по умолчанию используют значения по умолчанию для указанных столбцов. |
| Проверочные ограничения | Системные проверочные ограничения обеспечивают следующие требования. Допустимые имена файлов. Допустимые атрибуты файлов. Родительский объект должен быть каталогом. При обработке файла иерархия пространств имен заблокирована. |
Правила именования для ограничений, определённых системой
Системные ограничения, описанные ранее, называются в формате <constraintType>_<tablename>[_<columnname>]_<uniquifier> , в котором:
"<constraint_type> является CK (контрольное ограничение), DF (ограничение по умолчанию), FK (внешний ключ), PK (первичный ключ) или UQ (уникальное ограничение).
<uniquifier>— это созданная системой строка для уникального имени. Эта строка может содержать имя FileTable и уникальный идентификатор.