在SQL Server 2008 R2中,使用varbinary(max)插入的文件最大大小是多少?我试图将列中的max值更改为超过8000个字节,但不允许我这样做,所以我猜最大值是8000个字节,但根据MSDN上的this article,最大存储大小为2 ^ 31-1个字节:
varbinary [ ( n | max) ]:可变长度二进制数据。n的值可以从1到8000。max表示最大存储大小为2 ^ 31-1个字节。存储大小是输入数据的实际长度+2个字节。输入的数据长度可以为0字节。varbinary的ANSI SQL同义词是binary varying。
那么如何在varbinary字段中存储更大的文件?我不考虑使用FILESTREAM,因为我想保存的文件最大为200kb至1mb。我正在使用的代码:
我已经成功地执行了该代码,对于小于或等于8000字节的文件。如果我尝试使用大小为8001字节的文件,则会失败。我的表中的文件字段有一个名为“file”的字段,类型为
varbinary [ ( n | max) ]:可变长度二进制数据。n的值可以从1到8000。max表示最大存储大小为2 ^ 31-1个字节。存储大小是输入数据的实际长度+2个字节。输入的数据长度可以为0字节。varbinary的ANSI SQL同义词是binary varying。
那么如何在varbinary字段中存储更大的文件?我不考虑使用FILESTREAM,因为我想保存的文件最大为200kb至1mb。我正在使用的代码:
UPDATE [table]
SET file = ( SELECT * FROM OPENROWSET ( BULK 'C:\A directory\A file.ext', SINGLE BLOB) alias)
WHERE idRow = 1
我已经成功地执行了该代码,对于小于或等于8000字节的文件。如果我尝试使用大小为8001字节的文件,则会失败。我的表中的文件字段有一个名为“file”的字段,类型为
varbinary(8000)
,正如我所说,我无法将其更改为更大的值。
nvarbinary
并不存在。 - Aaron Bertrandvarbinary(n)
并给出一个具体的数字,最多可达 8000 - 超过这个范围是不可能的;要么你定义你的列或变量为varbinary(max)
,在这种情况下它可以容纳高达 2 GB 的数据。 - marc_s