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

Sql 我可以为varbinary的最大大小设置2MB吗?,sql,sql-server,sqldatatypes,varbinary,Sql,Sql Server,Sqldatatypes,Varbinary,据我所知,您可以“手动”定义的最大值是8000->varbinary(8000),据我所知,这意味着8000字节->78125 KByte 是否可以将最大值设置为2 MB?类似于varbinary(2097152),或者我应该将其设置为varbinary(max),并通过上传/sql插入脚本检查文件大小?没有规定指定varbinary(2097152), 一旦您跨越8000字节,您应该只选择max关键字 它将只消耗您所需的内存(在您的情况下是2MB),并且它将最多存储2GB varbinary(

据我所知,您可以“手动”定义的最大值是
8000
->
varbinary(8000)
,据我所知,这意味着
8000字节
->
78125 KByte


是否可以将最大值设置为2 MB?类似于
varbinary(2097152)
,或者我应该将其设置为
varbinary(max)
,并通过上传/sql插入脚本检查文件大小?

没有规定指定varbinary(2097152), 一旦您跨越8000字节,您应该只选择max关键字

它将只消耗您所需的内存(在您的情况下是2MB),并且它将最多存储2GB

varbinary(max) = 2 gigabytes.

您可以使用
检查约束来确保大小小于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);
您将得到一个错误:

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


VARBINARY(MAX)| FILESTREAM
是的,我知道MAX->2GB。只是想限制SQL方面。谢谢你。
DECLARE @B VARCHAR(MAX) = '|';
INSERT dbo.T (VarB)
SELECT CONVERT(VARBINARY(MAX), REPLICATE(@B, 2097153));