Ответ 1
Серьезно - VARCHAR(MAX)
может хранить до 2 ГБ данных - не только 8000 символов.....
Попробуйте следующее:
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)
Это возвращает значение выше, чем 8000 символов после 1000 итераций.
Дело в том, что если вы используете VARCHAR(MAX)
, вы должны всегда отличать все свои строки до VARCHAR(MAX)
явно - как это было в этом примере. В противном случае SQL Server вернется к "правильной" обработке varchar
, и это действительно ограничено 8000 символами....