FileTables (SQL Server)

FileTable 功能支持 Windows 文件命名空间,并与 Windows 应用程序兼容存储在 SQL Server 中的文件数据。 FileTable 允许应用程序集成其存储和数据管理组件,并通过非结构化数据和元数据提供集成的 SQL Server 服务(包括全文搜索和语义搜索)。

换句话说,可以在 SQL Server 中称为 FileTable 的特殊表中存储文件和文档,但从 Windows 应用程序访问这些文件,就像这些文件存储在文件系统中一样,而无需对客户端应用程序进行任何更改。

FileTable 功能基于 SQL Server FILESTREAM 技术生成。 若要了解有关 FILESTREAM 的详细信息,请参阅 FILESTREAM (SQL Server)。

FileTable 功能的优点

FileTable 功能的目标包括:

  • 存储在 SQL Server 数据库中的文件数据的 Windows API 兼容性。 Windows API 兼容性包括:

    • 对 FILESTREAM 数据的非事务性流访问和就地更新。

    • 目录和文件的分层命名空间。

    • 文件属性的存储,例如创建日期和修改日期。

    • 支持 Windows 文件和目录管理 API。

  • 与其他 SQL Server 功能的兼容性,包括管理工具、服务,以及通过 FILESTREAM 和文件属性数据进行的关系查询功能。

因此,FileTable 消除了对 SQL Server 用于存储和管理当前驻留在文件服务器上的非结构化数据的严重障碍。 企业可以将此数据从文件服务器移动到 FileTable,以利用 SQL Server 提供的集成管理和服务。 同时,他们可以为现有的 Windows 应用程序维护 Windows 应用程序兼容性,这些应用程序会将此数据视为文件系统中的文件。

什么是 FileTable?

SQL Server 为需要数据库中的文件和目录存储的应用程序提供特殊的 文件表(也称为 FileTable),并且具有 Windows API 兼容性和非事务性访问。 FileTable 是具有预定义架构的专用用户表,用于存储 FILESTREAM 数据,以及文件和目录层次结构信息和文件属性。

FileTable 提供以下功能:

  • FileTable 表示目录和文件的层次结构。 它存储与该层次结构中的所有节点相关的数据,包括目录及其包含的文件。 此层次结构从创建 FileTable 时指定的根目录开始。

  • FileTable 中的每个行都表示文件或目录。

  • 每行都包含以下项。 有关 FileTable 架构的详细信息,请参阅 FileTable 架构

    • 一个用于流数据的file_stream列和一个stream_id(GUID)标识符。 (file_stream 列在目录中为 NULL。)

    • 用于表示和维护文件和目录层次结构的两个列:path_locatorparent_path_locator

    • 10 个文件属性,例如创建日期和修改日期,可用于文件 I/O API。

    • 支持对文件和文档进行全文搜索和语义搜索的类型列。

  • FileTable 强制实施某些系统定义的约束和触发器来维护文件命名空间语义。

  • 为数据库配置非事务性访问时,FileTable 中表示的文件和目录层次结构将在为 SQL Server 实例配置的 FILESTREAM 共享下公开。 这为 Windows 应用程序提供文件系统访问权限。

FileTable 的一些其他特征包括:

  • 存储在 FileTable 中的文件和目录数据通过 Windows 共享公开,以便对基于 Windows API 的应用程序进行非事务性文件访问。 对于 Windows 应用程序,这看起来就像一个包含文件和目录的普通共享。 应用程序可以使用一组丰富的 Windows API 来管理此共享下的文件和目录。

  • 通过共享显示的目录层次结构是在 FileTable 中维护的纯逻辑目录结构。

  • 通过 Windows 共享创建或更改文件或目录的调用被 SQL Server 组件截获,并反映在 FileTable 中的相应关系数据中。

  • Windows API作本质上是非事务性的,与用户事务无关。 但是,完全支持对 FileTable 中存储的 FILESTREAM 数据的事务性访问,就像常规表中任何 FILESTREAM 列一样。

  • 还可以通过正常 Transact-SQL 访问查询和更新 FileTable。 它们还与 SQL Server 管理工具和备份等功能集成。

使用 FileTable 的其他注意事项

管理注意事项

关于 FILESTREAM 和 FileTable

  • 您可以独立配置 FileTable 和 FILESTREAM。 因此,可以继续使用 FILESTREAM 功能,而无需启用非事务访问或创建 FileTable。

  • 除通过 FileTable 外,没有对 FILESTREAM 数据的非事务性访问。 因此,启用非事务性访问时,现有 FILESTREAM 列和应用程序的行为不会受到影响。

关于 FileTable 和非事务性访问

  • 可以在数据库级别启用或禁用非事务性访问。

  • 可以通过禁用、启用只读或完全读写访问权限来配置或微调数据库的非事务性访问。

FileTable 不支持 Memory-Mapped 文件

FileTable 不支持内存映射文件。 记事本和画图是使用内存映射文件的应用程序的两个常见示例。 不能在与 SQL Server 相同的计算机上使用这些应用程序打开存储在 FileTable 中的文件。 但是,可以从远程计算机使用这些应用程序打开存储在 FileTable 中的文件,因为在这种情况下不使用内存映射功能。

相关任务

启用 FileTable 的先决条件
介绍如何启用创建和使用 FileTable 的先决条件。

创建、更改和删除 FileTable
介绍如何创建新的 FileTable,或更改或删除现有 FileTable。

将文件加载到 FileTable 中
介绍如何将文件加载或迁移到 FileTable。

在 FileTables 中使用目录和路径
描述文件存储在 FileTable 中的目录结构。

使用 Transact-SQL 访问 FileTable
介绍 Transact-SQL 数据作语言(DML)命令如何使用 FileTable。

使用文件 Input-Output API 访问 FileTable
描述文件系统 I/O 在 FileTable 上的工作原理。

管理 FileTable
介绍用于管理 FileTable 的常见管理任务。

相关内容

FileTable 架构
描述 FileTable 的预定义和固定架构。

FileTable 与其他 SQL Server 功能的兼容性
介绍 FileTable 如何使用 SQL Server 的其他功能。

FileTable DDL、函数、存储过程和视图
列出已添加或更改以支持 FileTable 功能的 Transact-SQL 语句和 SQL Server 数据库对象。