Поделиться через


Создание, изменение и удаление таблиц FileTable

Описывает, как создать таблицу 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:

  1. FILETABLE_DIRECTORY. Указывает каталог, который служит корневым каталогом для всех файлов и каталогов, хранящихся в FileTable. Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Сравнение на уникальность не учитывает регистр, независимо от текущих параметров коллации.

    • Это значение имеет тип данных nvarchar(255) и использует фиксированный параметр сортировки Latin1_General_CI_AS_KS_WS.

    • Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.

    • Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Сравнение уникальности не учитывает регистр независимо от текущих параметров сортировки.

    • Если при создании таблицы FileTable имя каталога не указано, имя самой таблицы FileTable используется в качестве имени каталога.

  2. FILETABLE_COLLATE_FILENAME. Указывает имя параметров сортировки, применяемых к столбцу Name в FileTable.

    1. Для соответствия семантике именования файлов Windows указанные параметры сортировки должны быть нечувствительными к регистру .

    2. Если значение для FILETABLE_COLLATE_FILENAME не указано или указано database_default, столбец наследует параметры сортировки текущей базы данных. Если текущая сортировка базы данных чувствительна к регистру, возникает ошибка, и операция CREATE TABLE не удается.

  3. Можно также указать имена, которые будут использоваться для 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 и уникальный идентификатор.

См. также

Управление FileTable