17

我正在使用 a 将文件(任何类型)保存在 SQL 表中varbinary(max),我发现此数据类型的最大使用量是 8000,但是 8000 是什么意思?

在线文档说是 8000 字节。这是否意味着要保存的文件的最大大小为 8000/1024 = 7.8125 KB?

我开始测试,我可以存储的最大文件是 29.9 MB。如果我选择一个更大的文件,就会得到一个 SQLException。

字符串或二进制数据将被截断。该语句已终止。

4

4 回答 4

49

在发布时实施 SQL Server 2012(代号 Denali) - 它具有FileTable功能 :)

  • varbinary(8000)受限于 8000 字节 - 这是肯定的!
  • varbinary(max)受限于 2 GB
  • varbinary(max) FILESTREAM受文件系统限制(FAT32 - 2 Gb,NTFS - 16 EB)
于 2011-04-19T23:12:06.803 回答
10

取自这里:

http://msdn.microsoft.com/en-us/library/ms188362.aspx

max 表示最大存储大小为 2³¹-1 个字节

这是 2 147 483 647 字节。我不确定为什么它会停在 29.9MB。

于 2011-04-19T22:59:57.983 回答
5

您使用的是什么版本的 SQL Server?

MSDN for SQL Server 2008 上的 Varbinary明确表示 VarBinary(MAX) 用于“列数据条目超过8,000 字节”时使用。

此外,如果那是您正在使用的服务器,我还将查看SQL Server 2008中的文件流功能。

于 2011-04-19T22:57:55.057 回答
5

尝试在 SQL Server 2005 上使用 varbinary(max) 存储 5MB 时出现“字符串或二进制数据将被截断”错误。增加数据库的自动增长大小解决了该问题。我花了一段时间才弄清楚,所以只是想我会分享:)

于 2012-06-12T23:54:42.033 回答