我可以在 SQL Server 2008 R2 中使用 varbinary(max) 插入的文件的最大大小是多少?我试图将列中的最大值更改为超过 8,000 字节,但它不会让我,所以我猜测最大值是 8,000 字节,但是从MSDN 上的这篇文章中,它说最大存储大小是 2 ^31-1 字节:
varbinary [ ( n | max ) ]
可变长度二进制数据。n 可以是 1 到 8,000 之间的值。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 字节大小的文件,它将失败。我在表格上的文件字段有一个名为“文件”类型的字段varbinary(8000)
,正如我所说,我不能更改为更大的值。