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


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

Описывает способы создания новых таблиц FileTable и изменения или удаления существующих таблиц FileTable.

В этом разделе

Необходимо ...

  • создать таблицу FileTable

    • Как создать таблицу FileTable

    • Требования и ограничения для создания FileTable

  • изменить FileTable

    • Как изменить каталог для таблицы FileTable

    • Требования и ограничения для изменения FileTable

  • удалить FileTable

Дополнительные сведения

  • Другие объекты базы данных, создаваемые при создании таблицы FileTable

Создание таблицы FileTable

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

Новую таблицу FileTable можно создать с помощью языка Transact-SQL или среды Среда SQL Server Management Studio. Поскольку таблица FileTable имеет фиксированную схему, нет необходимости указывать список столбцов. Простой синтаксис для создания таблицы FileTable позволяет указать следующее:

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

  • Имя параметров сортировки, используемое для имен файлов в столбце Name таблицы 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. Можно также указать имена, предназначенные для использования в трех первичных ключах и ограничениях уникальности, создаваемых автоматически. Если имена не будут предоставлены, то система сформирует имена, как описано ниже в этом разделе.

      • 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
    В обозревателе объектов разверните объекты в выбранной базе данных, затем щелкните правой кнопкой мыши папку Таблицы и выберите Создать 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.

Как изменить каталог для таблицы 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 и вложенные каталоги удаляются из файла 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,

    [name] ASC

    Уникальный, некластеризованный

    [stream_id] ASC

    Уникальный, некластеризованный

  • Ограничения, которые создаются при создании новой таблицы FileTable
    При создании новой таблицы FileTable также создаются следующие системные ограничения.

    Ограничения

    Принудительно применяет

    Ограничения по умолчанию для следующих столбцов:

    • creation_time

    • is_archive

    • is_directory

    • is_hidden

    • is_offline

    • is_readonly

    • is_system

    • is_temporary

    • last_access_time

    • last_write_time

    • path_locator

    • stream_id

    Системные ограничения по умолчанию используют значения по умолчанию для указанных столбцов.

    Проверочные ограничения;

    Системные проверочные ограничения обеспечивают следующие требования.

    • Допустимые имена файлов.

    • Допустимые атрибуты файлов.

    • Родительский объект должен быть каталогом.

    • При обработке файла иерархия пространств имен заблокирована.

  • Соглашение об именах для системных ограничений
    Системные ограничения, описанные выше, должны именоваться в формате <тип_ограничения>_<имя_таблицы>[_<имя-столбца>]_<уникализатор>, где:

    • <constraint_type> может быть равен CK (проверочное ограничение), DF (ограничение по умолчанию), FK (внешний ключ), PK (первичный ключ) или UQ (ограничение уникальности).

    • <uniquifier> — это формируемая системой строка, уникальным образом идентифицирующая ограничение. Эта строка может содержать имя таблицы FileTable и уникальный идентификатор.

[В НАЧАЛО]

См. также

Основные понятия

Управление таблицами FileTable