Убедитесь, что при конкатенации все является nvarchar (max)
взгляните на это
DECLARE @n NVARCHAR(MAX)
SELECT @n = REPLICATE(convert(varchar(max),'A'),300000)
select LEN(@n), DATALENGTH(@n)
GO
- 300000 600000
DECLARE @n NVARCHAR(MAX)
SELECT @n = REPLICATE('A',300000)
select LEN(@n), DATALENGTH(@n)
- 8000 16000