将共享物理文件夹映射到文件流

Pra*_*mar 7 sql-server sql-server-2012 filestream

我们正在开展一个项目,其中我们需要在 SQL Server 中处理大量图像、文本等。我们正在考虑使用 Filestream 和 filetable 功能。然而,即使在网上搜索了大量数据后,我们也无法找到以下查询的答案:

  1. 我们正在尝试在我们的系统上创建一个共享文件夹,然后将其映射到文件流。所以我们正在创建一个共享文件夹(比如 D:\Ftab​​le ),它的访问级别设置为每个人的完全访问权限。现在,当我们转到 SQL Server 配置管理器并尝试将此文件夹设置为 filstream 的共享文件夹(启用文件流访问的属性选项卡)时,它会向我们抛出错误:Windows 共享文件夹名称不是有效的 Windows 共享。我们知道文件流文件夹必须是本地文件夹,但是即使我们只是尝试放置不同的本地文件夹路径(如 D:\test 等),它也会给我们一个错误。

  2. 我们还想知道是否可以在映射驱动器上创建文件流共享目录?我们在一个系统上创建了一个共享文件夹,并将该文件夹映射到另一个系统上(使其显示为本地)。然而,再一次,当我们尝试将映射驱动器上的特定文件夹设置为文件流共享文件夹时,它会抛出一个错误。

非常感谢有关该主题的任何指示/帮助。我们的主要访问权限是在我们选择的物理位置创建文件流共享,该共享位置是共享的,以便我们可以远程/或通过工具将数据传输到它。

ste*_*ary 7

这不是文件流和文件表的工作方式,您不能指定现有共享的名称,因为 SQL Server 将尝试创建您在 SQL Server 配置管理器中指定的共享。这是因为共享不像普通共享那样直接映射到文件系统上的文件夹,而是映射到位于为数据库创建的文件流文件组中的 NTFS 数据容器。

文件流/文件表存在一种误解,因为数据存储在文件系统中,所以它只是一个普通文件夹,这并不完全正确。

创建数据库时,您指定其中一个文件组是文件流文件组,这与普通文件组不同,实际上是一系列称为数据容器的 NTFS 文件夹,这是您的文件实际存储的位置,您可以t 直接修改这个文件夹,但你可以查看内容(虽然这里没有太多人类可读的东西,但如果你通过 GUID 文件夹和奇怪命名的文件足够努力,你可以在这里找到你的实际文件:)) .

用于将文件复制到表中的文件共享实际上是这些数据容器内数据的表示形式,它通过过滤器驱动程序呈现给 Windows 资源管理器,该驱动程序使用流 API 对数据容器进行更改并添加行到文件表等。

因此,如果您想指定文件的物理存储位置,您需要将该位置指定为您希望文件流文件组存储的位置,然后您可以将共享名称更改为您想要的任何名称。