据我所知,您可以定义最大值"手动"是8000
- > varbinary(8000)
,据我所知,这意味着8000 bytes
- > 7,8125 KByte
。
是否可以将最大值设置为2 MB
?有什么东西varbinary(2097152)
,或者我应该把它设置为varbinary(max)
并通过我的upload / sql insert脚本检查文件大小?
答案 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.