Poważnie - VARCHAR(MAX)
może przechowywać do 2 GB danych - nie tylko 8000 znaków....
Spróbuj tego:
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)
Zwróci to wartość wyższą niż 8000 znaków po 1000 iteracjach.
Chodzi o to, że jeśli używasz varchar(max)
, pamiętaj, aby zawsze przesyłać wszystkie twoje ciągi do varchar(max)
wyraźnie - tak jak zrobiłem w tym przykładzie. W przeciwnym razie SQL Server powróci do „zwykłego” varchar
przetwarzanie, a to rzeczywiście jest ograniczone do 8000 znaków....