SQL Server中varbinary(max)的最大实际空间是多少?

19

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

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

我开始进行测试,可以存储的最大文件大小为29.9 MB。如果选择更大的文件,则会收到SQLException。

 

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


13
这个说法完全错误 - VARBINARY(MAX) 字段的容量是 2 GB(2'147'483'647 字节),而不仅仅是 8000。 - marc_s
4个回答

52

等SQL Server 2012 (代号Denali)发布后,实施它 - 它拥有FileTable功能:)

  • varbinary(8000)的限制是8000字节 - 这是确定的!
  • varbinary(max)的限制是2 GB
  • varbinary(max) FILESTREAM的限制取决于您的文件系统(FAT32-2 Gb,NTFS-16 exabytes)

1
我发现了错误...根据您的评论,我意识到在我的代码中有一个 Archivo.Size = 8000(Archivo 是一个 SqlParameter),我以为 8000 = Max ... !!!! ,当我删除它时,它就可以工作了!!非常感谢... - carlos
有用的答案! - გენო მუმლაძე

10

在那个链接上我比你先发现了,但不知何故没有得到相同的声誉。^^ 无论如何,为了澄清Mike的观点,2147483647字节等于2GB,因此除了任何超时问题之外,在出现任何截断警告之前,文件的最大大小应该是这个值。 - Smudge202
1
是的,这正是我找到的相同信息,但出于某种原因,它在29.999 MB处发送异常,我没有预期上传2GB的文件,但也没有预期30 MB。您有其他想法吗?我已经更改了IIS参数...谢谢!! - carlos

5

5

在试图使用varbinary(max)存储5MB时,我在SQL Server 2005中遇到了“String or binary data would be truncated”错误。增加数据库的自动增长大小解决了这个问题。花了我一些时间才弄清楚,所以想和大家分享一下 :)


我遇到了类似的问题:使用SQL Server Express 10.0.0.2531,我无法将2 MB的文件存储到数据库中。列类型为varbinary(max),自动增长已启用,我甚至增加了起始大小,现在数据库中有800 MB的可用空间。但仍然出现截断错误。我感到很困惑... - uceumern
@uceumern,你找到解决方案了吗? - aggsol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接