gpt4 book ai didi

sql-server-2012 - SQL Server 2012 FileTable- 是存储在数据库中的文件吗?

转载 作者:行者123 更新时间:2023-12-04 20:11:57 24 4
gpt4 key购买 nike

如果我在 SQL Server 2012 中创建一个 FileTable,然后将一个 4G 文件放到 NT 文件系统(在文件流中),整个 4G 文件是否会被读入表的文件流列?

SQL 实际上是在复制我的 4G 文件吗?或者文件流列是否代表指向我的 4G 文件的指针,它在查询时开始读取?

我只是想弄清楚我是否向文件系统添加了 100G 的数据,是否会向我的数据库添加 100G 的数据大小。

有人可以帮助解释这是如何工作的吗?甚至更好地向我指出一些比 MS/MSDN 'how-to' 内容更详细的文档?

编辑:这很有趣 - 如果我在 FT 目录中放置一个 1G 文件,然后选择 file_stream 列包含该文件的所有数据(我认为)。但如果我这样做 sp_spaceused FileTableTb在放入该文件之前和之后,表大小不会改变。也许这是选择打开文件流并将其读入的证据,但除此之外,数据未存储在表中?

最佳答案

你是对的,数据没有存储在数据库中,而是存储在文件系统本身中,同样重要的是要注意,当文件被放置在文件系统上时,文件并没有“读入”到数据库中,这意味着它被复制到另一个位置,它实际上存储为 NTFS 文件,并且 FileStream API 显示文件表内的文件元数据。

文件表建立在 SQL 2008 中引入的 FileStream 技术之上,但允许您通过 Windows 资源管理器直接修改数据。

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

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

关于sql-server-2012 - SQL Server 2012 FileTable- 是存储在数据库中的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com