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


Таблицы FileTable (SQL Server)

Область применения: SQL Server

Функция FileTable обеспечивает поддержку пространства имен файлов Windows и совместимости с приложениями Windows к данным файлов, хранящимся в SQL Server. Таблица FileTable позволяет приложению интегрировать свои компоненты хранения и управления данными, а также обеспечивает работу интегрированных служб SQL Server, включая полнотекстовый и семантический поиск, с неструктурированными данными и метаданными.

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

Функция FileTable основана на технологии SQL Server FILESTREAM. Дополнительные сведения о FILESTREAM см. в разделе FILESTREAM (SQL Server).

Преимущества функции FileTable

Таблицы FileTable имеют следующее назначение.

  • Совместимость API Windows для файлов, хранящихся в базе данных SQL Server. Совместимость с API-интерфейсами Windows включает следующее.

    • Потоковый доступ без транзакций и обновление на месте с заменой данных FILESTREAM.

    • Иерархическое пространство имен для каталогов и файлов.

    • Хранение атрибутов файлов, таких как дата создания и дата изменения.

    • Поддержка API-интерфейсов Windows для управления файлами и каталогами.

  • Совместимость с другими функциями SQL Server, включая средства управления, службы и возможности реляционных запросов через FILESTREAM и данные атрибута файла.

Таким образом, FileTables удаляют значительный барьер для использования SQL Server для хранения и управления неструктурированными данными, которые в настоящее время находятся в качестве файлов на файловых серверах. Предприятия могут перемещать эти данные с файловых серверов в FileTables, чтобы воспользоваться преимуществами интегрированного администрирования и служб, предоставляемых SQL Server. В то же время сохраняется совместимость с существующими приложениями Windows, рассматривающими данные как файлы в файловой системе.

Что такое FileTable?

SQL Server предоставляет специальную таблицу файлов, которая также называется FileTable, для приложений, требующих хранения файлов и каталогов в базе данных, с совместимостью API Windows и доступом без транзакций. FileTable — это специализированная таблица пользователей с предварительно определенной схемой, в которой хранятся данные FILESTREAM, а также сведения о иерархии файлов и каталогов и атрибуты файлов.

Таблицы FileTable обеспечивают следующие функциональные возможности.

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

  • Каждая строка в таблице FileTable представляет файл или каталог.

  • Каждая строка содержит следующие элементы. Дополнительные сведения о схеме таблиц FileTable см. в разделе FileTable Schema.

    • file_stream Столбец для потоковой передачи данных и stream_id идентификатор GUID. (Столбец file_stream имеет значение NULL для каталога.)

    • Как path_locator и parent_path_locator столбцы для представления и поддержания текущего элемента (файла или каталога) и иерархии каталогов.

    • 10 атрибутов файлов, таких как дата создания и дата изменения, которые требуются для API-интерфейсов файлового ввода-вывода.

    • Столбец типа, который поддерживает полнотекстовый поиск и семантический поиск по файлам и документам.

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

  • Если база данных настроена для доступа без транзакций, иерархия файлов и каталогов, представленная в FileTable, предоставляется в общей папке FILESTREAM, настроенной для экземпляра SQL Server. Это обеспечивает доступ приложениям Windows к файловой системе.

Некоторые дополнительные характеристики FileTables

  • Данные файлов и каталогов, хранящиеся в таблице FileTable, отображаются с помощью общего ресурса Windows для нетранзакционного доступа к файлам из приложений на основе API-интерфейсов Windows. Для приложения Windows это выглядит как обычная общая папка с файлами и каталогами. Приложения могут использовать богатый набор API-интерфейсов Windows для управления файлами и каталогами, находящимися в этой общей папке.

  • Иерархия каталогов, отображаемая в общем хранилище, является просто логической структурой каталога, сохраняемой в таблице FileTable.

  • Вызовы для создания или изменения файла или каталога с помощью общей папки Windows перехватываются компонентом SQL Server и отражаются в соответствующих реляционных данных в FileTable.

  • Операции API Windows не являются транзакциями в природе и не связаны с транзакциями пользователей. Тем не менее транзакционный доступ к данным FILESTREAM, хранящимся в таблице FileTable, полностью поддерживается, как это происходит для любого столбца FILESTREAM в обычной таблице. Если вам нужно часто изменять файлы из нескольких подключений и обеспечить правильную защиту файлов, используйте доступ к транзакциям FILESTREAM через OpenSqlFilestream(), а не монопольные блокировки файлов на уровне API Windows.

  • FileTables также можно запрашивать и обновлять с помощью обычного доступа Transact-SQL. Они также интегрированы с инструментами управления SQL Server и функциями, такими как резервное копирование.

  • Вы не можете отправить запрос электронной почты через Database Mail и вложить файл, расположенный в каталоге FILESTREAM (и, следовательно, FileTable). Драйвер фильтра файловой системы RsFx0420 проверяет входящие запросы ввода-вывода, поступающие и исходящие из папки FILESTREAM. Если запрос не является исполняемым файлом SQLServer и кодом FILESTREAM, они явно запрещены.

Дополнительные рекомендации по использованию FileTables

Рекомендации по административным действиям

О функции FILESTREAM и таблицах FileTable

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

Нетранзакционный доступ к данным FILESTREAM возможен исключительно с помощью таблиц FileTable. Поэтому при включении доступа без транзакций поведение существующих столбцов и приложений FILESTREAM не затрагивается.

О таблицах FileTable и нетранзакционном доступе

Можно включить или отключить нетранзакционный доступ на уровне базы данных.

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

FileTables не поддерживают сопоставленные с памятью файлы

FileTables не поддерживают сопоставленные с памятью файлы. Двумя распространенными примерами приложений, в которых используются файлы, отображаемые на память, являются Notepad и Paint. Эти приложения нельзя использовать на том же компьютере, что и SQL Server, для открытия файлов, хранящихся в FileTable. Однако эти приложения можно использовать с удаленного компьютера для открытия файлов, хранящихся в FileTable, так как в этих случаях функция сопоставления памяти не используется.