在 SQL Server 2008 R2 中使用 varbinary(max) 可以插入的文件的最大大小是多少?我试图将列中的最大值更改为超过 8,000 字节,但它不允许我这样做,所以我猜测最大值是 8,000 字节,但是从MSDN 上的这篇文章,它表示最大存储大小为 2^31-1 字节:
瓦尔二进制 [ ( n | max) ]
可变长度二进制数据。 n 可以是 1 到 8,000 之间的值。max表示最大存储大小为2^31-1字节。存储大小为输入数据的实际长度+2字节。输入的数据长度可以是 0 字节。 ANSI SQL 同义词为瓦尔二进制 is 二进制变化.
那么如何在 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)
正如我所说,我无法更改为更大的值。
我无法重现这个场景。我尝试了以下方法:
USE tempdb;
GO
CREATE TABLE dbo.blob(col VARBINARY(MAX));
INSERT dbo.blob(col) SELECT NULL;
UPDATE dbo.blob
SET col = (SELECT BulkColumn
FROM OPENROWSET( BULK 'C:\Folder\File.docx', SINGLE_BLOB) alias
);
SELECT DATALENGTH(col) FROM dbo.blob;
Results:
--------
39578
如果上限为 8K,那么我猜测以下任一情况为真:
该专栏实际上是VARBINARY(8000)
.
您正在 Management Studio 中选择数据,并分析其中显示的数据的长度。结果到文本的最大字符数限制为 8192 个字符(如果是这种情况),因此使用DATALENGTH()
直接针对柱子是更好的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)