Im Ernst - VARCHAR(MAX)
kann bis zu 2 GB Daten speichern - nicht nur 8000 Zeichen.....
Versuchen Sie Folgendes:
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)
Dadurch wird ein höherer Wert zurückgegeben als 8000 Zeichen nach 1000 Iterationen.
Der Punkt ist:wenn Sie varchar(max)
verwenden , müssen Sie sicherstellen, dass Sie immer casten all deine Strings zu varchar(max)
ausdrücklich - wie ich es in diesem Beispiel getan habe. Andernfalls greift SQL Server auf "normales" varchar
zurück Verarbeitung, und das ist in der Tat auf 8000 Zeichen begrenzt....