This behavior also has something to do with the funny way in which SQL does implicit conversions. Change your code as follows and try again?DECLARE @MESSAGE VARCHAR(MAX)SET @MESSAGE = REPLICATE(cast('1234567890' as varchar(max)),300)SET @MESSAGE = @MESSAGE + @MESSAGE SET @MESSAGE = @MESSAGE + @MESSAGE SELECT LEN(@MESSAGE)Edit: On second thoughts - ignore what I said here. The problem I have seen happens when you doDECLARE @MESSAGE VARCHAR(MAX)SET @MESSAGE = REPLICATE('1234567890',5000) only to find that it is not 50,000 characters long.