我无法识别这张带有 PDF 的表格中发生了什么

Rac*_*SQL -1 sql-server-2012 filestream

我有一个带有此配置的表:

在此输入图像描述

现在,如果您查看 COLUMN_11,它是一个 varchar -1。

但据我所知,要将 PDF 文件插入表中,您需要文件流,并且列应该是 VARBINARY(max) 对吗?

那么,这是如何运作的呢?为什么 VARCHAR 列中有 PDF?

DocumentBody 是这样的:

在此输入图像描述

显然,这样的数量有数百万。

J.D*_*.D. 5

当您看到或数据类型-1的值时,这只是 .NET SQLDBTYPE 的数字表示形式,如此所述VARCHARNVARCHARMAX

因此,看起来应用程序可能只是将 PDF 的序列化编码字符串表示形式存储在数据库中的一VARCHAR(MAX)列中。

我假设设计此的开发人员认为这是存储 PDF 的最简单方法,而不是VARBINARY(MAX),这会节省您的空间(正如 Dan Guzman 在评论中指出的那样)。此外,实际上最佳实践是不要将文件本身存储在数据库中,而是存储在文件系统中的某个位置,并将对该文件的位置引用存储在数据库中。