Seriöst - VARCHAR(MAX)
kan lagra upp till 2 GB data - inte bara 8000 tecken.....
Prova detta:
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)
Detta returnerar ett värde högre än 8000 tecken efter 1000 iterationer.
Poängen är:om du använder varchar(max)
måste du se till att alltid casta alla dina strängar till varchar(max)
uttryckligen - som jag gjorde i det här exemplet. Annars kommer SQL Server att falla tillbaka till "vanlig" varchar
bearbetning, och det är verkligen begränsat till 8000 tecken....