REPLICATE
returnerer inputtypen uanset senere tildeling. Det er irriterende, men for at undgå tavs trunkering, prøv:
SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);
Dette skyldes, at SQL Server udfører REPLICATE
handling, før den overvejer, hvad du tildeler den til, eller hvor mange tegn, du forsøger at udvide den til. Det bekymrer sig kun om input-udtrykket for at bestemme, hvad det skal returnere, og hvis input ikke er en max-type, antager det, at det er beregnet til at passe inden for 8.000 bytes. Dette er forklaret i Books Online
: