En serio - VARCHAR(MAX)
puede almacenar hasta 2 GB de datos, no solo 8000 caracteres...
Prueba esto:
DECLARE @myVar VARCHAR(MAX) = ''
DECLARE @ix INT = 1
WHILE @ix < 1000
BEGIN
set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
SET @ix = @ix + 1
END
SELECT DATALENGTH(@myvar)
Esto devolverá un valor más alto de 8000 caracteres después de 1000 iteraciones.
El punto es:si está usando varchar(max)
, debes asegurarte de transmitir siempre todas sus cadenas a varchar(max)
explícitamente, como hice en este ejemplo. De lo contrario, SQL Server recurrirá a varchar
"regular" procesamiento, y de hecho está limitado a 8000 caracteres....