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

fis*_*g3r 3 sql sql-server varbinary sqldatatypes

据我所知,您可以“手动”定义的最大值是8000-> varbinary(8000)据我所知,是指8000 bytes-> 7,8125 KByte

可以将max设置为2 MB吗?有点问题varbinary(2097152),还是应该将其设置为varbinary(max)并通过我的上载/ sql插入脚本检查文件大小?

Gar*_*thD 7

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

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

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

您得到一个错误:

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