sql-server - SQL Server (Transact-SQL) Filestream 和 BLOB 之间的区别

标签 sql-server t-sql

任何人都可以用外行的术语解释一下,这两种数据类型之间有什么区别,以及使用这两种数据类型在数据库中存储文件的优缺点。

如果需要上下文,那么我将创建一个 Web 应用程序,用户可以在其中上传大量不同的数据,例如图像、Excel 文件、.docx 等。

最佳答案

Blob 存储在 varbinary(MAX) 列中,其值存储在数据库数据文件内的数据页中。

使用 FILESTREAM,值作为单独的文件单独存储在文件系统上,每行和值都有一个单独的文件。这些文件由 SQL Server 内部管理,可以使用 T-SQL 进行存储和检索,就像正常的 varbinary(MAX) 值或 with Win32 APIs 一样。 .

还有FileTables ,这是一个在 FILESTREAM 之上具有预定义架构的专用表。 FileTable 提供像 Blob 和 FILESTREAM 一样的 T-SQL 访问,并且可以选择通过 SQL Server 管理的 UNC 路径进行访问,类似于普通的 Windows 共享。通过共享创建/删除文件会从文件表中插入/删除行,反之亦然。

关于sql-server - SQL Server (Transact-SQL) Filestream 和 BLOB 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739994/

相关文章:

sql - 使用多列分组的单个结果集

sql - 无法按日期时间排序设置行号

sql - 有外键关系的数据如何在SQL中实现软删除?

sql-server - 主键、唯一键和外键约束与索引之间有什么区别?

sql - 将包含时间范围的行切成多行(棘手的 sql 问题)

c# - 何时从 SQL Server 下载值(为了性能)

sql - 多对多数据关系的文本搜索

sql - 在 SQL Server 中的标识列中插入小于最大值的值

php - 在 SQL Server 中使用 phpunit/dbunit 时出错

sql - 优化器会忽略唯一的过滤索引和索引 View