Seriamente - VARCHAR(MAX)
può memorizzare fino a 2 GB di dati, non solo 8000 caratteri.....
Prova questo:
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)
Questo restituirà un valore più alto di 8000 caratteri dopo 1000 iterazioni.
Il punto è:se stai usando varchar(max)
, devi assicurarti di trasmettere sempre tutte le tue stringhe in varchar(max)
esplicitamente - come ho fatto in questo esempio. In caso contrario, SQL Server ricadrà su varchar
"normale". elaborazione, e questo è effettivamente limitato a 8000 caratteri....