과거에 누군가 나에게 .NET의 최대 크기를 물었다 varchar(max)
면 2GB라고 말했거나 더 정확한 수치 (2 ^ 31-1 또는 2147483647)를 찾아봤을 것 입니다.
그러나 최근 테스트에서 varchar(max)
변수가 분명히이 크기를 초과 할 수 있음을 발견했습니다 .
create table T (
Val1 varchar(max) not null
)
go
declare @KMsg varchar(max) = REPLICATE('a',1024);
declare @MMsg varchar(max) = REPLICATE(@KMsg,1024);
declare @GMsg varchar(max) = REPLICATE(@MMsg,1024);
declare @GGMMsg varchar(max) = @GMsg + @GMsg + @MMsg;
select LEN(@GGMMsg)
insert into T(Val1) select @GGMMsg
select LEN(Val1) from T
결과 :
(no column name)
2148532224
(1 row(s) affected)
Msg 7119, Level 16, State 1, Line 6
Attempting to grow LOB beyond maximum allowed size of 2147483647 bytes.
The statement has been terminated.
(no column name)
(0 row(s) affected)
이제 변수 가 2GB 장벽을 초과 할 수 있다는 것을 알고 있다면 변수 의 실제 제한이 무엇인지 아는 사람이 varchar(max)
있습니까?
(위의 테스트는 SQL Server 2008 (R2 아님)에서 완료되었습니다. 다른 버전에도 적용되는지 알고 싶습니다.)
declare @x varchar(max) = 'XX'; SELECT LEN(REPLICATE(@x,2147483647))
주는4294967294
나를 위해하지만 실행하는 데 시간이 오래 소요 - (가) 후에도SELECT
그렇게하지 않도록 여분의 시간이 일 소요되는 것을 반환했습니다.