varbinary的最大大小可以设置2 MB吗?

时间:2016-01-12 10:25:20

标签: sql sql-server sqldatatypes varbinary

据我所知,您可以定义最大值"手动"是8000 - > varbinary(8000),据我所知,这意味着8000 bytes - > 7,8125 KByte

是否可以将最大值设置为2 MB?有什么东西varbinary(2097152),或者我应该把它设置为varbinary(max)并通过我的upload / sql insert脚本检查文件大小?

2 个答案:

答案 0 :(得分:5)

您可以使用CHECK CONSTRAINT确保尺寸低于2MB:

CREATE TABLE dbo.T
(
    ID INT IDENTITY,
    VarB VARBINARY(MAX)
);

ALTER TABLE dbo.T ADD CONSTRAINT CHK_T_VarB__2MB CHECK (DATALENGTH(VarB) <= 2097152);

然后在尝试插入大于2 MB的内容时:

DECLARE @B VARCHAR(MAX) = '|';
INSERT dbo.T (VarB)
SELECT CONVERT(VARBINARY(MAX), REPLICATE(@B, 2097153));

您收到错误消息:

  

INSERT语句与CHECK约束“CHK_T_Column__2MB”冲突。冲突发生在数据库“TestDB”,表“dbo.T”,列“VarB”。

答案 1 :(得分:1)

没有规定varbinary(2097152), 一旦你跨越8000字节,你应该只使用max关键字。

它只会占用您需要的内存(在您的情况下为2MB)并且最多可以存储2GB。

varbinary(max) = 2 gigabytes.